Riproduci Installa libreria referrer Aggiunta delle autorizzazioni WRITE_EXTERNAL_STORAGE e READ_EXTERNAL_STORAGE


19

Stiamo provando ad aggiornare la libreria dei referrer di installazione di Google Play e

Internamente sta aggiungendo alcune autorizzazioni di scrittura in lettura esterne .

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

Dobbiamo davvero attenerci alle autorizzazioni?

dipendenza implementation 'com.android.installreferrer:installreferrer:1.1

Fonte https://developer.android.com/google/play/installreferrer/library.html


1
Questo dovrebbe essere risolto in 1.1.2: issuetracker.google.com/issues/146115244
Ian G. Clifton

Risposte:


4

Ho anche riscontrato questo problema.

Ma nel mio caso, la versione 1.1 aggiunge anche l'autorizzazione READ_PHONE_STATE

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

Ho decompilato il file .aar per installreferrer: 1.1 e controllato il file manifest e pom, non c'è nulla in questi file che indichi che queste autorizzazioni dovrebbero essere aggiunte.
Il file manifest della libreria aggiunge solo questa autorizzazione (che è sempre presente nelle versioni precedenti):

<uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE"/>

Non sono stato in grado di trovare alcuna informazione ufficiale al riguardo.
Ma altre librerie di Google hanno avuto problemi in passato con l'aggiunta di autorizzazioni aggiuntive, non necessarie, che sono state poi rimosse in una versione dell'aggiornamento rapido poco dopo.
Ad esempio, questo:
perché è stata aggiunta l'autorizzazione READ_PHONE_STATE?

Quindi spero che succederà lo stesso qui.


1
Install referrer aggiunge questa autorizzazione a causa del fatto che la versione target-sdk è inferiore a quella che ottiene implicitamente l'autorizzazione. Se dai un'occhiata al rapporto manifest-merger puoi vedere questo: le uses-permission#android.permission.READ_PHONE_STATE IMPLIED from android/app/src/main/AndroidManifest.xml:1:1-130:12 reason: com.android.installreferrer has a targetSdkVersion < 4 informazioni sull'autorizzazione implicita sono disponibili in questa documentazione: developer.android.com/studio/build/…
Dinesh

6

Install referrer aggiunge questa autorizzazione a causa del fatto che targetSdkVersionè un valore inferiore alla versione in cui è stata aggiunta la restrizione. Se dai un'occhiata al rapporto manifest-merger- generato nella cartella build della tua app, puoi vedere queste informazioni:

uses-permission#android.permission.READ_PHONE_STATE
IMPLIED from android/app/src/main/AndroidManifest.xml:1:1-130:12 reason: com.android.installreferrer has a targetSdkVersion < 4

Informazioni su come funziona questa autorizzazione di sistema implicita su Android sono disponibili in questa documentazione: https://developer.android.com/studio/build/manifest-merge#inspect_the_merged_manifest_and_find_conflicts


4

Da questa risposta :

Questo perché hanno aggiunto una dipendenza a

com.google.android.gms:play-services-measurement:17.2.1

Che aggiunge quelle autorizzazioni.

Puoi trovarlo nel file: manifest-merger-blame-debug-report.txt che si trova sotto "yourApp / build / intermediates / manifest_merge_blame_file / debug"

È probabilmente un bug. Inoltre, installreferrer 1.1.1non lo risolve.

Soluzione più semplice è quella di downgrade installreferrerdi nuovo a 1.0per ora.

Ma se hai bisogno di questa versione, puoi aggiungere:

<uses-permission android:name="<permission_name>" tools:node="remove" />

Per disabilitarlo. Ma sappi che se utilizzerai qualsiasi API che ne abbia bisogno all'interno della libreria, potrebbe portare a un arresto anomalo , quindi non ti consiglio di farlo.


2

Citando da questa risposta (e completando):

Le versioni 1.1 e 1.1.1 mancano "minSdkVersion". Ciò aggiungerebbe automaticamente tali autorizzazioni (poiché l'SDK predefinito <4, come affermato da @thiagolr). Vedi problema simile qui: Google Play Services 12.0.1 .

Soluzione

La versione 1.1.2 risolve questo problema.

Dettagli

Manifest.xml per v1.0 (da https://mvnrepository.com/artifact/com.android.installreferrer/installreferrer/1.0 )

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.installreferrer" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="22" />

    <uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" />

    <application />

</manifest>

Manifest.xml per v1.1 (da https://mvnrepository.com/artifact/com.android.installreferrer/installreferrer/1.1 )

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.installreferrer">

    <uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" />

    <application />

</manifest>

1

Si potrebbe teoricamente rimuoverli del tutto con la fusione manifest:

<manifest
    xmlns:tools="http://schemas.android.com/tools">

    <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" />

</manifest>

Ma se la biblioteca funzionerà ancora come previsto è un'altra storia -

è piuttosto un'eccezione, che una biblioteca di Google richiede autorizzazioni non necessarie.

Le note di rilascio e la documentazione non menzionano le autorizzazioni.


1

Queste autorizzazioni vengono aggiunte perché com.android.installreferrerha targetSdkVersion <4. Puoi vederlo nel file manifest-merger-release-report.txt che si trova nella cartella Temp \ gradleOut \ build \ output \ logs all'interno del tuo progetto. Questo è un bug e probabilmente verrà risolto su una versione più recente.

Per risolvere questo problema, devi scoprire quale plugin sta aggiungendo com.android.installreferrercome dipendenza.


Nel mio progetto, il colpevole era il plugin di Facebook . Utilizza il com.facebook.android:facebook-core:5.15.xpacchetto che è responsabile dell'aggiunta della com.android.installreferrer:installreferrer:1.1dipendenza.

La soluzione è stata il rollback a com.facebook.android:facebook-core:5.13.0, che non ha una com.android.installreferrerdipendenza.

Modifica il file FacebookSDK/Plugins/Editor/Dependencies.xmle cambia questi pacchetti in:

<androidPackage spec="com.facebook.android:facebook-core:[5,5.13.0)" />
<androidPackage spec="com.facebook.android:facebook-applinks:[5,5.13.0)" />
<androidPackage spec="com.facebook.android:facebook-login:[5,5.13.0)" />
<androidPackage spec="com.facebook.android:facebook-share:[5,5.13.0)" />

Quindi, non dimenticare di risolvere nuovamente le dipendenze: Assets > Play Services Resolver > Android Resolver > Force Resolve


1

1.1.2 viene rilasciato, aggiunge correttamente minSdkVersion.

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="22" />
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.