Mainkan Instal Pustaka Referensi yang Menambahkan izin WRITE_EXTERNAL_STORAGE dan READ_EXTERNAL_STORAGE

19

Kami sedang mencoba memperbarui Pustaka Pengarah Instal Google Play dan

Secara internal itu menambahkan beberapa izin baca tulis eksternal .

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

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

Apakah kita benar-benar harus tetap dengan izin?

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

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

wadali
sumber
1
Ini harus diperbaiki di 1.1.2: issuetracker.google.com/issues/146115244
Ian G. Clifton

Jawaban:

4

Saya juga menemukan masalah ini.

Namun dalam kasus saya, versi 1.1 juga menambahkan izin READ_PHONE_STATE

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

Saya telah mendekompilasi file .aar untuk installreferrer: 1.1 dan memeriksa file manifes dan pom, tidak ada dalam file-file itu untuk menunjukkan bahwa izin ini harus ditambahkan.
File manifes perpustakaan hanya menambahkan izin ini (yang selalu ada di versi sebelumnya):

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

Saya belum dapat menemukan informasi resmi mengenai hal ini.
Tetapi perpustakaan Google lain di masa lalu memiliki masalah dengan menambahkan izin tambahan, yang tidak dibutuhkan, yang kemudian dihapus dalam versi perbaikan terbaru tak lama setelah itu.
Sebagai contoh, ini:
Mengapa izin READ_PHONE_STATE ditambahkan?

Jadi saya berharap hal yang sama akan terjadi di sini.

Moonbloom
sumber
1
Install referrer menambahkan izin ini karena fakta bahwa target-sdk-versi lebih rendah daripada yang secara implisit memperoleh izin. Jika Anda melihat laporan manifes-merger-Anda dapat melihat ini: 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 Informasi tentang izin implisit dapat ditemukan dalam dokumentasi ini: developer.android.com/studio/build/…
Dinesh
6

Perujuk penginstal menambahkan izin ini karena faktanya targetSdkVersionadalah nilai yang lebih rendah dari versi di mana pembatasan ditambahkan. Jika Anda melihat laporan manifes-merger- buatan di folder build aplikasi Anda, Anda dapat melihat informasi ini:

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

Informasi tentang cara izin sistem implisit ini bekerja di Android dapat ditemukan dalam dokumentasi ini: https://developer.android.com/studio/build/manifest-merge#inspect_the_merged_manifest_and_find_conflicts

Dinesh
sumber
4

Dari jawaban ini :

Ini karena mereka telah menambahkan ketergantungan pada

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

Yang menambahkan izin itu.

Anda dapat menemukannya di file: manifest-merger-menyalahkan-debug-report.txt yang berada di bawah "yourApp / build / intermediates / manifest_merge_blame_file / debug"

Itu mungkin bug. Juga, installreferrer 1.1.1tidak menyelesaikannya.

Solusi termudah adalah downgrade installreferrerkembali ke 1.0untuk saat ini.

Tetapi jika Anda membutuhkan versi ini, Anda dapat menambahkan:

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

Untuk menonaktifkannya. Tetapi ketahuilah bahwa jika Anda akan menggunakan API apa pun yang membutuhkannya di dalam perpustakaan, itu dapat menyebabkan crash , jadi saya tidak akan merekomendasikan melakukannya.

Luzian
sumber
2

Mengutip dari jawaban ini (dan menyelesaikan):

Versi 1.1 dan 1.1.1 tidak ada "minSdkVersion". Ini akan secara otomatis menambahkan izin tersebut (karena SDK <4 default seperti yang dikatakan oleh @ thiagolr). Lihat masalah serupa di sini: Layanan Google Play 12.0.1 .

Larutan

Versi 1.1.2 memecahkan masalah ini.

Detail

Manifest.xml untuk v1.0 (dari 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 untuk v1.1 (dari 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
sumber
1

Seseorang secara teoritis dapat menghapusnya sama sekali dengan manifes-merger:

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

Tetapi jika perpustakaan akan tetap bekerja seperti yang diharapkan adalah cerita lain -

itu agak pengecualian, bahwa perpustakaan Google memerlukan izin yang tidak perlu.

The rilis catatan dan dokumentasi tidak menyebutkan perizinan.

Martin Zeitler
sumber
1

Izin ini ditambahkan karena com.android.installreferrermemiliki targetSdkVersion <4. Anda dapat melihatnya pada file manifest-merger-release-report.txt yang terletak di Temp \ gradleOut \ build \ outputs \ logs di dalam proyek Anda. Ini adalah bug dan mungkin akan diperbaiki pada versi yang lebih baru.

Untuk memperbaiki ini, Anda perlu mencari tahu plugin mana yang ditambahkan com.android.installreferrersebagai dependensi.


Dalam proyek saya, pelakunya adalah plugin Facebook . Ia menggunakan com.facebook.android:facebook-core:5.15.xpaket yang bertanggung jawab untuk menambahkancom.android.installreferrer:installreferrer:1.1 ketergantungan.

Solusinya adalah rollback ke com.facebook.android:facebook-core:5.13.0, yang tidak memiliki com.android.installreferrerketergantungan.

Edit file FacebookSDK/Plugins/Editor/Dependencies.xmldan ubah paket-paket ini ke:

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

Selanjutnya, jangan lupa untuk menyelesaikan dependensi lagi: Assets > Play Services Resolver > Android Resolver > Force Resolve

thiagolr
sumber
1

1.1.2 dirilis, ia menambahkan minSdkVersion dengan benar.

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