Unityでアンドロイドアプリを作っていると唐突にこんな画面が出た。
あれ?っと思って色々調べると AndroidManifest.xml に READ_PHONE_STATE が付加されていることが原因だった。
チケットも出てるけど仕様ってことで放置されてるので自力で何とかしてみる。
まずアプリに適用されるマニフェストはProject/Temp/StagingArea/ AndroidManifest.xml を確認する。
このとき Assets/Plugins/Android/AndroidManifest.xml が存在すると上書きできるが、システム的には追記するぐらいなので基本的には勝手に作られてしまう。
今回は以下の部分が勝手に追加されていた。
1 2 3 4 |
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> |
とりえあず発着信の管理なんていう必要もないのに重たい権限を消したい。
ターゲットAPIを26未満にするとかminSdkVersionを上げればよいとか見かけた。
設定とマニフェストを色々変えてみたけど権限を消すことはできなかった。
ちなみに AndroidManifest を用意している場合、 minSdkVersion はマニフェスト targetSdkVersion は PlayerSettings に依存していた。
また tools:node=”remove” を使ってマージ時に削除する方法も出来なかった。
最終手段としてSDKをダウングレードする。
使っているSDKからtools以外をコピーしてココからダウンロードしたtoolsに置き換えて、Edit > Preferences > External Tools > SDK を作った方に変更する。
これで不要な権限を付けられることはなくなったけど、やっぱり最新のものを使うのが良いと思うのでSDKを使い分けることになりそうです。面倒…。