Oynat Yükleme Yönlendiren Kütüphanesi WRITE_EXTERNAL_STORAGE ve READ_EXTERNAL_STORAGE izinleri ekleniyor


19

Google Play Yükleme Yönlendirme Kitaplığını güncellemeye çalışıyoruz ve

Dahili olarak bazı harici okuma yazma izinleri ekliyor .

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

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

Gerçekten izinlere uymamız gerekiyor mu?

bağımlılık implementation 'com.android.installreferrer:installreferrer:1.1

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


1
Bu, 1.1.2'de düzeltilmelidir: issuetracker.google.com/issues/146115244
Ian G. Clifton

Yanıtlar:


4

Ben de bu konuyla karşılaştım.

Ama benim durumumda, 1.1 sürümü de READ_PHONE_STATE iznini ekliyor

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

Ben installreferrer: 1.1 için .aar dosyasını decompiled ve manifest ve pom dosyasını kontrol ettik, bu izinlerde eklenmesi gerektiğini gösteren hiçbir şey yoktur.
Kitaplık bildirim dosyası yalnızca bu izni ekler (her zaman önceki sürümlerde bulunur):

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

Bununla ilgili resmi bir bilgi bulamadım.
Ancak diğer Google kütüphaneleri, geçmişte kısa bir süre sonra bir düzeltme sürümünde kaldırılan ek, gereksiz izinler eklemeyle ilgili sorunlar yaşadı.
Örneğin, bu:
READ_PHONE_STATE izni neden eklendi?

Umarım burada da aynı şey olur.


1
Yönlendirmeyi yükle, target-sdk-sürümünün, izni dolaylı olarak aldığından daha düşük olması nedeniyle bu izni ekler. Manifest-birleşme raporuna bakarsanız şunu görebilirsiniz: 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 Örtük izne ilişkin bilgiler bu belgede bulunabilir: developer.android.com/studio/build/…
Dinesh

6

Yönlendirmeyi yükle targetSdkVersion, kısıtlamanın eklendiği sürümden daha düşük bir değer olması nedeniyle bu izni ekler . Uygulamanızın derleme klasöründe oluşturulan manifest-merger-report'a bakarsanız, şu bilgileri görebilirsiniz:

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

Bu örtük sistem izninin Android'de nasıl çalıştığı hakkında bilgi bu belgede bulunabilir: https://developer.android.com/studio/build/manifest-merge#inspect_the_merged_manifest_and_find_conflicts


4

Gönderen bu cevap :

Bunun nedeni,

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

Hangi bu izinleri ekler.

Dosyada bulabilirsiniz: "yourApp / build / ara / / manifest_merge_blame_file / debug" altında bulunan manifest-merger-blame-debug-report.txt

Muhtemelen bir hata. Ayrıca, installreferrer 1.1.1çözmez.

En kolay çözüm şimdilik installreferrergeri dönmektir 1.0.

Ancak bu sürüme ihtiyacınız varsa şunları ekleyebilirsiniz:

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

Devre dışı bırakmak için. Ancak, kitaplığın içinde ihtiyacı olan herhangi bir API'yi kullanırsanız, bir çökmeye neden olabileceğini unutmayın , bu yüzden bunu önermeyeceğim.


2

Bu yanıttan alıntı yapılıyor (ve tamamlanıyor):

Sürüm 1.1 ve 1.1.1'de "minSdkVersion" eksik. Bu, bu izinleri otomatik olarak ekler (çünkü @thiagolr tarafından söylendiği gibi varsayılan SDK <4). Benzer sorunu burada görebilirsiniz: Google Play Hizmetleri 12.0.1 .

Çözüm

Sürüm 1.1.2 bu sorunu çözer.

ayrıntılar

V1.0 için Manifest.xml ( https://mvnrepository.com/artifact/com.android.installreferrer/installreferrer/1.0 adresinden )

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

V1.1 için Manifest.xml ( https://mvnrepository.com/artifact/com.android.installreferrer/installreferrer/1.1 adresinden )

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

Birisi teorik olarak manifest-birleşme ile hepsini kaldırabilir:

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

Ama eğer kütüphane hala beklendiği gibi çalışacaksa başka bir hikaye -

Google kütüphanesinin gereksiz izinler gerektirmesi oldukça istisnadır.

Sürüm notları ve dokümantasyon izinleri söz etmeyin.


1

Bu izinler, com.android.installreferrertargetSdkVersion <4'e sahip olduğu için eklenir . Bunu, projenizdeki Temp \ gradleOut \ build \ outputs \ logs klasöründe bulunan manifest-merger-release- report.txt dosyasında görebilirsiniz . Bu bir hatadır ve muhtemelen daha yeni bir sürümde düzeltilecektir.

Bunu düzeltmek için, hangi eklentinin com.android.installreferrerbağımlılık olarak eklendiğini bulmanız gerekir .


Projemde suçlu Facebook eklentisiydi. Bağımlılığı com.facebook.android:facebook-core:5.15.xeklemekle com.android.installreferrer:installreferrer:1.1yükümlü olan paketi kullanır .

Çözüm, com.facebook.android:facebook-core:5.13.0bir com.android.installreferrerbağımlılığı olmayan geri dönme idi .

Dosyayı düzenleyin FacebookSDK/Plugins/Editor/Dependencies.xmlve şu paketleri değiştirin:

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

Sonra, bağımlılıkları tekrar çözmeyi unutmayın: Assets > Play Services Resolver > Android Resolver > Force Resolve


1

1.1.2 yayınlandı, minSdkVersion'ı doğru ekler.

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="22" />
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.