Play Install Referrer Library Agregando permisos WRITE_EXTERNAL_STORAGE y READ_EXTERNAL_STORAGE

19

Estamos intentando actualizar la Biblioteca de referencia de instalación de Google Play y

Internamente está agregando algunos permisos de lectura y escritura externos .

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

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

¿Realmente necesitamos cumplir con los permisos?

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

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

wadali
fuente
1
Esto debería solucionarse en 1.1.2: issuetracker.google.com/issues/146115244
Ian G. Clifton

Respuestas:

4

También me he encontrado con este problema.

Pero en mi caso, la versión 1.1 también agrega el permiso READ_PHONE_STATE

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

Descompilé el archivo .aar para installreferrer: 1.1 y verifiqué el archivo de manifiesto y pom, no hay nada en esos archivos que indique que se deben agregar estos permisos.
El archivo de manifiesto de la biblioteca solo agrega este permiso (que siempre se tiene en versiones anteriores):

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

No he podido encontrar ninguna información oficial sobre esto.
Pero otras bibliotecas de Google han tenido problemas en el pasado al agregar permisos adicionales innecesarios, que luego se eliminaron en una versión de revisión poco después.
Por ejemplo, esto:
¿Por qué se ha agregado el permiso READ_PHONE_STATE?

Así que espero que pase lo mismo aquí.

Flor de luna
fuente
1
El referente de instalación agrega este permiso debido a que la versión de destino-sdk es inferior a la que obtiene implícitamente el permiso. Si echa un vistazo al manifiesto-fusión-informe puede ver esto: la 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 información sobre el permiso implícito se puede encontrar en esta documentación: developer.android.com/studio/build/…
Dinesh
6

El referente de instalación agrega este permiso debido al hecho de que targetSdkVersiones un valor inferior a la versión en la que se agregó la restricción. Si echa un vistazo al informe de fusión-manifiesto generado en la carpeta de compilación de su aplicación, puede ver esta información:

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

Puede encontrar información sobre cómo funciona este permiso de sistema implícito en Android en esta documentación: https://developer.android.com/studio/build/manifest-merge#inspect_the_merged_manifest_and_find_conflicts

Dinesh
fuente
4

De esta respuesta :

Esto se debe a que han agregado una dependencia a

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

Lo que agrega esos permisos.

Puede encontrarlo en el archivo: manifest-merger-blame-debug-report.txt que se encuentra en "yourApp / build / intermedtes / manifest_merge_blame_file / debug"

Probablemente sea un error. También,installreferrer 1.1.1 no lo resuelve.

La solución más fácil es bajar de installreferrernuevo a1.0 por ahora.

Pero si necesita esta versión, puede agregar:

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

Para deshabilitarlo. Pero sepa que si usará cualquier API que la necesite dentro de la biblioteca, podría provocar un bloqueo , por lo que no recomendaré hacerlo.

Luziano
fuente
2

Citando de esta respuesta (y completando):

Las versiones 1.1 y 1.1.1 no tienen "minSdkVersion". Esto agregaría automáticamente esos permisos (porque el SDK predeterminado <4 como lo dijo @thiagolr). Vea un problema similar aquí: Google Play Services 12.0.1 .

Solución

La versión 1.1.2 resuelve este problema.

Detalles

Manifest.xml para v1.0 (de 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 para v1.1 (de 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>
sagis
fuente
1

Se podría teóricamente eliminarlos por completo con el manifiesto de la fusión:

<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>

Pero si la biblioteca seguirá funcionando como se espera es otra historia:

Es más bien una excepción, que una biblioteca de Google requiere permisos innecesarios.

Las notas de la versión y la documentación no mencionan los permisos.

Martin Zeitler
fuente
1

Estos permisos se agregan porque com.android.installreferrertiene un targetSdkVersion <4. Puede verlo en el archivo manifest-merger-release-report.txt ubicado en Temp \ gradleOut \ build \ salidas \ logs dentro de su proyecto. Este es un error y probablemente se solucionará en una versión más nueva.

Para solucionar esto, debe averiguar qué complemento se agrega com.android.installreferrercomo dependencia.


En mi proyecto, el culpable fue el complemento de Facebook . Utiliza el com.facebook.android:facebook-core:5.15.xpaquete que se encarga de agregar la com.android.installreferrer:installreferrer:1.1dependencia.

La solución fue revertir a com.facebook.android:facebook-core:5.13.0, que no tiene una com.android.installreferrerdependencia.

Edite el archivo FacebookSDK/Plugins/Editor/Dependencies.xmly cambie estos paquetes a:

<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)" />

A continuación, no olvides resolver las dependencias nuevamente: Assets > Play Services Resolver > Android Resolver > Force Resolve

tiagolr
fuente
1

1.1.2 se lanza, agrega minSdkVersion correctamente.

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