PlayインストールリファラーライブラリWRITE_EXTERNAL_STORAGEおよびREAD_EXTERNAL_STORAGE権限の追加


19

Google Playインストールリファラーライブラリを更新しようとしています

内部的には、いくつかの外部読み取り/書き込み権限が追加されています。

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

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

本当にアクセス許可を守る必要がありますか?

依存 implementation 'com.android.installreferrer:installreferrer:1.1

ソースhttps://developer.android.com/google/play/installreferrer/library.html


1
これは1.1.2で修正する必要があります。issuetracker.google.com
Ian G. Clifton

回答:


4

私もこの問題に遭遇しました。

しかし、私の場合、1.1バージョンにはREAD_PHONE_STATE権限も追加されています

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

installreferrer:1.1の.aarファイルを逆コンパイルし、マニフェストとpomファイルを確認しました。これらのファイルには、これらの権限を追加する必要があることを示すものはありません。
ライブラリマニフェストファイルは、この権限のみを追加します(これは以前のバージョンでは常に持っています)。

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

これに関する公式情報を見つけることができませんでした。
しかし、他のGoogleライブラリには、不要な権限を追加するという問題がありましたが、その後すぐにホットフィックスバージョンで削除されました。
たとえば、次のとおりです。
なぜREAD_PHONE_STATE権限が追加されたのですか?

同じことがここで起こることを願っています。


1
target-sdk-versionが権限を暗黙的に取得するよりも低いため、インストールリファラーはこの権限を追加します。:あなたはマニフェスト・合併・レポートを見てみる場合は、この見ることができます 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 :暗黙の許可に関する情報は、このドキュメントに記載されていますdeveloper.android.com/studio/build/...
ディネッシュ

6

targetSdkVersionは制限が追加されたバージョンよりも低い値であるため、インストール参照元はこの権限を追加します。アプリのビルドフォルダーで生成されたmanifest-merger-reportを確認すると、次の情報を確認できます。

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

この暗黙のシステム権限がAndroidでどのように機能するかについての情報は、このドキュメントにあります:https : //developer.android.com/studio/build/manifest-merge#inspect_the_merged_manifest_and_find_conflicts


4

この回答から:

これは、依存関係が追加されたためです

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

これらの権限が追加されます。

これは、「yourApp / build / intermediates / manifest_merge_blame_file / debug」の下にあるmanifest-merger-blame-debug-report.txtファイルで見つけることができます。

それはおそらくバグです。また、installreferrer 1.1.1それを解決しません。

最も簡単な解決策は、今のところにダウングレードinstallreferrerすること1.0です。

ただし、このバージョンが必要な場合は、以下を追加できます。

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

それを無効にします。ただし、ライブラリ内で必要なAPIを使用すると、クラッシュつながる可能性があるので、お勧めしません。


2

この回答からの引用(および完了):

バージョン1.1および1.1.1には「minSdkVersion」がありません。これにより、これらの権限が自動的に追加されます(@thiagolrで述べられているデフォルトのSDK <4のため)。ここで同様の問題を参照してください:Google Play開発者サービス12.0.1

解決

バージョン1.1.2ではこの問題が解決されています。

細部

v1.0用のManifest.xml(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>

v1.1のManifest.xml(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

一つは、可能性が理論的にはマニフェストの合併でそれらを完全に削除します。

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

しかし、ライブラリが期待どおりに機能するかどうかは別の話です-

Googleライブラリが不必要な権限を必要とするのは、むしろ例外です。

リリースノートおよびドキュメンテーションは許可を言及していません。


1

com.android.installreferrertargetSdkVersion <4であるため、これらの権限が追加されます。プロジェクト内のTemp \ gradleOut \ build \ outputs \ logsフォルダーにあるmanifest-merger-release-report.txtファイルで確認できます。これはバグであり、おそらく新しいバージョンで修正される予定です。

これを修正するにはcom.android.installreferrer、依存関係として追加しているプラ​​グインを見つける必要があります。


私のプロジェクトでは、犯人はFacebookプラグインでした。依存関係のcom.facebook.android:facebook-core:5.15.x追加を担当するパッケージを使用しますcom.android.installreferrer:installreferrer:1.1

解決策はcom.facebook.android:facebook-core:5.13.0com.android.installreferrer依存関係のないにロールバックすることでした。

ファイルFacebookSDK/Plugins/Editor/Dependencies.xmlを編集して、これらのパッケージを次のように変更します。

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

次に、依存関係を再度解決することを忘れないでください: Assets > Play Services Resolver > Android Resolver > Force Resolve


1

1.1.2がリリースされ、minSdkVersionが正しく追加されます。

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="22" />
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.