APK から意図しない不要なパーミッションを削除する方法

android/app/src/main/AndroidManifest.xml<uses-permission android:name="{パーミッション名}" tools:node="remove" /> を追加する事で、意図しない不要なパーミションを削除できる

背景

  • 意図しない READ_PHONE_STATE が付与された APK(Android application PacKage) を Google Play Console にアップロードした際に「プライバシーポリシーの設定が必要となります」エラーが発生した

  • 原因

    • 利用してる React Native のライブラリ( react-native-device-info ) によってビルドした APK に READ_PHONE_STATEパーミッションが付与されていた為
      • react-native-device-infogetPhoneNumber()android.permission.READ_PHONE_STATE を使用する
      • 今回のアプリでは getPhoneNumber() は未使用 (電話番号の取得は不要)
  • 解決方法

    • android/app/src/main/AndroidManifest.xml に下記の設定を追加
      • <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />

作業メモ: before/after

Gradele でビルド ($ ./gradlew assembleRelease)

before

  • <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" /> を追加前
    • android/app/build/intermediates/manifests/full/release/AndroidManifest.xml<uses-permission android:name="android.permission.READ_PHONE_STATE" /> が付与されていた

after

  • <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" /> を追加後
    • android/app/build/intermediates/manifests/full/release/AndroidManifest.xml<uses-permission android:name="android.permission.READ_PHONE_STATE" /> が付与されなくなった