AndroidアプリにおいてAndroid Studioでビルドしていると、
AndroidManifest.xmlではパーミッション(権限)を付与していないのに、アプリを起動したときになぜか勝手にパーミッションが付与されていることに気づくことがあります。
なぜそのようなことが発生するのでしょうか?
実は、自分では付与していなくても広告ツールなどのSDKを導入していると勝手に、パーミッションがついてしまうケースがあります。
その理由は、SDK側で必要なパーミッションをこっそりと追加しているためです。
勝手にパーミッションがつけられていないか確認方法
SDKを導入したら、勝手にパーミッションがつけられていないかマージログから確認します。
確認方法は、以下のファイルを開きます。
app/build/outputs/logs/manifest-merger-debug-report.txt
※ここでは「app」をAndroid Projectのルートとします。
ログに以下のような内容の書き込みがあったらパーミッションが付与されています。
android:name
ADDED from [com.apptentive:apptentive-android:5.1.1] C:\Users\your_path\Desktop\prod\build\intermediates\exploded-aar\com.apptentive\apptentive-android\5.1.1\AndroidManifest.xml:40
android:uses-permission#android.permission.READ_EXTERNAL_STORAGE
IMPLIED from C:\Users\your_path\Desktop\prod\src\main\AndroidManifest.xml:2:1-128:12 reason: com.apptentive.android.sdk requested WRITE_EXTERNAL_STORAGE
ADDED
android.permission.READ_EXTERNAL_STORAGE
という内容から、パーミッションが付与されていることがわかります。
こっそり追加されるパーミッションを削除するには?
AndroidManifest.xmlに、対象のパーミッションについてremoveを追加します。
READ_EXTERNAL_STORAGEを削除するときの例は以下のとおりです。
AndroidManifest.xmlファイルにて
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
tools:node="remove"/>
※ただし、本当に削除してよいパーミッションか確認せよ!
SDKによるパーミッションの付与は、そもそも「必要だから」追加するケースがほとんどです。本当にパーミッションを削除してよいかはSDKなどのドキュメントを確認した上で対処してください!
以上、解決方法でした。