Unity开发-Android打包自动添加权限
发表于2018-11-02
Unity在生成APK包的时候会根据AndroidManifest.xml模板文件和Player settings里的发布设置来生成AndroidManifest.xml文件。

由于最近项目需要,有些Android设备(机上)不支持一些权限,诸如:
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
等权限……
是将Unity安装目录的AndroidManifest文件拷贝过来,不要给里面配任何权限,那么自然就没有这些权限了。其实不然,最后用Android SDK里面的build-tools文件夹下的aapt测试:
aapt dump badging *.apk
还是有这些权限,老是删不掉。怀疑Unity自己给添加了这些权限……好一阵子都在吐槽Unity太坑。有办法是到处Android项目再进行删除,无奈无法割舍自己辛苦写下的Unity一键打包。
我用Unity创建一个空的项目还是回有那些可恶的权限,实在不知怎么办了。网上也没什么好的解决办法,最后升级了Unity的版本,再次测试的时候给了我惊喜,居然空项目没有了那些权限,怀疑是Unity版本的问题。既然这样那可能是Unity自己官方修复 了这个问题吧。好景不长,在新的项目又出现了那些权限,这是怎么回事、?又建一个空项目测试,没有啊!怎么了?两个项目比较,发现无非就是多了个NGUI。对就是这个东西。删除之后打包,没有了权限。那我们就没法用NGUI了吗?不是的,我想Unity之所以要给我们自动添加一些权限,是因为我们代码里面一定调用了应用到这些权限的接口,所以找到对应的接口然后屏蔽掉就可以了。
<uses-permission android:name="android.permission.INTERNET" />
这个权限起初以为是Application.OpenURL,其实是WWW这个类的引用才会出现这个权限。
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
顾名思义,这个定时访问网络状态的,Application.internetReachability == NetworkReachability.NotReachable类似的判断自然不能有。
最后检查第三方的插件SDK,如友盟神马的,如果你用了类似的jar包或者代码引用,就需要注意了。很多情况都需要权限。
所以你把这些东东清理干净之后,你会发现权限消失了。
SystemInfo.deviceUniqueIdentifier
调用这个接口也会导致Unity自动添加
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" />
这两个权限。
如果你使用了obb分包的话,Unity也会自动添加一些额外的权限
uses-permission:'android.permission.INTERNET' uses-permission:'android.permission.ACCESS_NETWORK_STATE' uses-permission:'android.permission.ACCESS_WIFI_STATE' uses-permission:'com.android.vending.CHECK_LICENSE' uses-permission:'android.permission.WRITE_EXTERNAL_STORAGE'

来自:https://blog.csdn.net/h5q8n2e7/article/details/50484203
如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引