Play Install Referrer Libraryを導入すると不要なパーミッションが付与される話
前回はAndroidのPlay Install Referrer Libraryの導入方法を紹介しました。 今回は、そのまま導入したときに不要なパーミッションが追加されてしまう件と、その回避方法を紹介します。
Merged Manifest
Play Install Referrer Libraryを追加した後のMerged Manifestは次のようになっています。
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
...>
<uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
...
</manifest>
パーミッションとしてBIND_GET_INSTALL_REFERRER_SERVICE
は必要そうですが、WRITE_EXTERNAL_STORAGE
/READ_PHONE_STATE
/READ_EXTERNAL_STORAGE
は必要なさそうです。
なぜ追加された?
Android StudioのMerged Manifestではパーミッションが追加された理由を確認することができます。確認してみると次のように書かれています。
reason: {アプリID} has a targetSdkVersion < 4
targetSdkVersion
は29に設定しているのに4より小さいと言われています。これは Play
Install Referrer
Libraryがバージョン1.1.1の時点でtargetSdkVersion
の指定がなく、1として扱われているのが原因です。
解決策は?
アプリ側のAndroidManifest.xml
で、次のようにremoveします。なお、アプリ本体や別ライブラリでこれらのパーミッションを使用している場合は
removeしないようにしましょう。
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
...>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove"/>
...
</manifest>