关于Unity打Android包自动添加权限的问题

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'


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值