Edited at

UnityでAndroidをビルドしたときに勝手にREAD_PHONE_STATEが付与される

More than 1 year has passed since last update.


背景

某SDKを導入したり、自分で書いたnative pluginを導入した際に、なぜかREAD_PHONE_STATE権限が付与されてしまってハマった。


要因

AndroidのBuildToolsが26.0.2以上でビルドした際に発生


原因

新しいBuildToolsでは、AndroidManifest.xmlが複数あったときにmergeする時の挙動が変わった.

minSdkVersionとtargetSdkVersionの両方の指定がないと勝手にREAD_PHONE_STATEなどの下位互換性を保つための権限が付与される。

この挙動自体は正しく、いままでよりAndroidManifestの指定が厳格になった感じらしい。


対処

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
+ <uses-sdk android:targetSdkVersion="26" android:minSdkVersion="19" />
<application>
</application>
</manifest>

uses-sdkで各AndroidManifestにtargetSdkVersionとminSdkVersionを指定してあげることで回避した。