背景
某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を指定してあげることで回避した。