Play Install Referrer Library Hinzufügen der Berechtigungen WRITE_EXTERNAL_STORAGE und READ_EXTERNAL_STORAGE

19

Wir versuchen, die Google Play Install Referrer Library und zu aktualisieren

Intern werden einige externe Lese- und Schreibberechtigungen hinzugefügt .

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

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

Müssen wir uns wirklich an die Berechtigungen halten?

Abhängigkeit implementation 'com.android.installreferrer:installreferrer:1.1

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

Wadali
quelle
1
Dies sollte in 1.1.2 behoben werden
Ian G. Clifton

Antworten:

4

Ich bin auch auf dieses Problem gestoßen.

In meinem Fall fügt die Version 1.1 jedoch auch die Berechtigung READ_PHONE_STATE hinzu

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

Ich habe die .aar-Datei für installreferrer: 1.1 dekompiliert und die Manifest- und POM-Datei überprüft. Diese Dateien enthalten keine Hinweise darauf, dass diese Berechtigungen hinzugefügt werden sollten.
Die Bibliotheksmanifestdatei fügt nur diese Berechtigung hinzu (die in früheren Versionen immer vorhanden ist):

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

Ich konnte keine offiziellen Informationen dazu finden.
Andere Google-Bibliotheken hatten jedoch in der Vergangenheit Probleme mit dem Hinzufügen zusätzlicher, nicht benötigter Berechtigungen, die kurz darauf in einer Hotfix-Version entfernt wurden.
Beispiel:
Warum wurde die Berechtigung READ_PHONE_STATE hinzugefügt?

Ich hoffe also, dass hier dasselbe passiert.

Mondblüte
quelle
1
Install referrer fügt diese Berechtigung hinzu, da die Ziel-SDK-Version niedriger ist, als sie implizit die Berechtigung erhält. Wenn Sie sich den Manifest-Merger-Bericht ansehen, sehen Sie Folgendes: 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 Informationen zur impliziten Berechtigung finden Sie in dieser Dokumentation: developer.android.com/studio/build/…
Dinesh
6

Install referrer fügt diese Berechtigung hinzu, da der targetSdkVersionWert niedriger ist als die Version, in der die Einschränkung hinzugefügt wurde. Wenn Sie sich den generierten Manifest-Merger-Bericht im Build-Ordner Ihrer App ansehen, sehen Sie folgende Informationen:

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

Informationen zur Funktionsweise dieser impliziten Systemberechtigung unter Android finden Sie in der folgenden Dokumentation: https://developer.android.com/studio/build/manifest-merge#inspect_the_merged_manifest_and_find_conflicts

Dinesh
quelle
4

Aus dieser Antwort :

Dies liegt daran, dass sie eine Abhängigkeit hinzugefügt haben

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

Welches fügt diese Berechtigungen hinzu.

Sie finden es in der Datei: manifest-merger-tadel-debug-report.txt unter "yourApp / build / intermediates / manifest_merge_blame_file / debug".

Es ist wahrscheinlich ein Fehler. Ebenfalls,installreferrer 1.1.1 ist es nicht lösen.

Die einfachste Lösung ist ein Downgradeinstallreferrer zurück zu 1.0jetzt.

Wenn Sie diese Version benötigen, können Sie Folgendes hinzufügen:

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

Um es zu deaktivieren. Wenn Sie jedoch eine API verwenden, die diese in der Bibliothek benötigt, kann dies zu einem Absturz führen . Ich werde dies daher nicht empfehlen.

Luzian
quelle
2

Zitat aus dieser Antwort (und vervollständigen):

In Version 1.1 und 1.1.1 fehlt "minSdkVersion". Dies würde diese Berechtigungen automatisch hinzufügen (da das Standard-SDK <4 ist, wie von @thiagolr angegeben). Ein ähnliches Problem finden Sie hier: Google Play Services 12.0.1 .

Lösung

Version 1.1.2 löst dieses Problem.

Einzelheiten

Manifest.xml für v1.0 (von 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 für v1.1 (von 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
quelle
1

Man könnte sie theoretisch mit der Manifest-Fusion ganz entfernen:

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

Aber ob die Bibliothek dann noch wie erwartet funktioniert, ist eine andere Geschichte -

Es ist eher eine Ausnahme, dass eine Google-Bibliothek unnötige Berechtigungen erfordert.

In den Versionshinweisen und in der Dokumentation werden keine Berechtigungen erwähnt.

Martin Zeitler
quelle
1

Diese Berechtigungen werden hinzugefügt, da com.android.installreferrersie eine targetSdkVersion <4 haben. Sie können sie in der Datei manifest-merger-release-report.txt im Ordner Temp \ gradleOut \ build \ output \ logs in Ihrem Projekt anzeigen . Dies ist ein Fehler und wird wahrscheinlich auf einer neueren Version behoben.

Um dies zu beheben, müssen Sie herausfinden, welches Plugin com.android.installreferrerals Abhängigkeit hinzugefügt wird .


In meinem Projekt war der Schuldige das Facebook- Plugin. Es verwendet das com.facebook.android:facebook-core:5.15.xPaket, das für das Hinzufügen der com.android.installreferrer:installreferrer:1.1Abhängigkeit verantwortlich ist.

Die Lösung bestand darin, ein Rollback durchzuführen com.facebook.android:facebook-core:5.13.0, für das keine com.android.installreferrerAbhängigkeit besteht.

Bearbeiten Sie die Datei FacebookSDK/Plugins/Editor/Dependencies.xmlund ändern Sie diese Pakete 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)" />

Vergessen Sie nicht, die Abhängigkeiten erneut aufzulösen: Assets > Play Services Resolver > Android Resolver > Force Resolve

thiagolr
quelle
1

1.1.2 ist freigegeben, es fügt minSdkVersion korrekt hinzu.

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