更新OneSignal UnityPackage后Android编译失败,求解决方案
解决OneSignal更新后Android编译失败的实操方案
兄弟,我之前踩过几乎一模一样的坑——更新OneSignal的unitypackage后,和UniWebView凑一起就把Android编译搞崩了,尤其是Unity5.6这个版本,兼容性问题特别多。给你几个亲测有效的排查方向,你挨个试试:
1. 先揪出Android Manifest的冲突问题
OneSignal和UniWebView都会自动往AndroidManifest.xml里加配置,更新后大概率出现重复声明:
- 先去Unity项目的
Assets/Plugins/Android文件夹找合并后的Manifest;如果没找到,先跑一次编译(哪怕失败),Unity会把临时生成的Manifest放到Temp/StagingArea里 - 重点查这几个地方:
- 重复的
<uses-permission>权限,比如推送相关的com.google.android.c2dm.permission.RECEIVE - 重复的
<activity>或<receiver>组件,比如OneSignal的NotificationOpenedReceiver和UniWebView的WebViewActivity - 重复的
<meta-data>配置,比如Google Play Services的版本标签
- 重复的
2. 换掉老掉牙的Build Tools版本
你现在用的build-tools-23.0.1太老了,和Unity5.6的适配性很差:
- 去Android SDK Manager里装build-tools-26.0.2(这是Unity5.6官方推荐的稳定版本),顺便把对应的Android SDK Platform 26也装上
- 打开Unity的
Edit > Preferences > External Tools,确认Android SDK路径正确,然后把Build Tools版本选成刚装的26.0.2
3. 彻底清理OneSignal的旧残留
更新unitypackage经常会留下旧文件引发冲突:
- 直接删掉
Assets/Plugins/Android/OneSignal整个文件夹 - 重新导入最新的OneSignal unitypackage
- 再检查
Assets/Plugins下有没有重复的OneSignal相关.dll,比如旧版的OneSignal.dll或者OneSignalAndroid.dll,有的话一起删掉
4. 检查UniWebView的兼容性
UniWebView的部分版本和新版OneSignal天生不对付:
- 把UniWebView更到Unity5.6对应的最新稳定版(UniWebView 4.x对Unity5.x的支持最好,别瞎更到5.x)
- 打开UniWebView的设置面板,看看它的Manifest生成选项有没有和推送冲突的配置,比如是不是自动加了没必要的权限
5. 用极简项目排查根源
如果前面的方法都没用,就用排除法缩小范围:
- 新建一个空的Unity5.6项目,只导入最新的OneSignal包,编译Android版本,看能不能正常跑
- 如果没问题,再导入UniWebView编译,这样就能确定是不是两个插件的冲突
对了,你贴的aapt报错只给了开头,其实后面的具体错误信息(比如duplicate resource或者invalid manifest)才是关键,要是能把完整报错贴出来,能更快定位问题——比如如果是error: duplicate value for resource 'attr/fontFamily',那就是资源文件冲突,得合并对应的style文件。
内容的提问来源于stack exchange,提问作者Luciano P.
相关产品推荐
相关产品推荐

