我是直接在网上购买了付费课,在老师的指导下直接学习Unity集成arr包的过程。课程连接如下——
https://ke.qq.com/course/376543
这位老师讲解得蛮详细的,而且课程从安装Studio、平台申请、集成arr、Unity工程一直到部署服务器,都讲了一遍,干货满满!
虽然如此,但是跟着老师操作一遍,在最后Unity里打包APK时还是遇到了很多报错。作为安卓小白,我硬着头皮,用了整整一天时间,网上各种搜索,好不容易解决了这些问题。
这里记录一下我的处理过程,以方便后来者。另外,作为习惯微软VS的开发者,不得不吐糟一句,Android Studio和Xcode这两个开发工具真不是人用的。。。造这两个轮子的人,我觉得水平很不如巨硬。
Unity版本号:2018.2.18 f1
Android Studio版本号:3.5.2
Scripting Backend我用过的是IL2CPP,这年头谁还用Mono~
PS:由于微信SDK已经更新,另附本地接入wechat-sdk-android-6.8.0.aar的最新方法更新。
报错1:
UnityEditor.BuildPlayerWindow+BuildMethodException: 2 errors
at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (BuildPlayerOptions options) [0x00242] in D:\unity\Editor\Mono\BuildPlayerWindowBuildMethods.cs:194
at UnityEditor.BuildPlayerWindow.CallBuildMethods (Boolean askForBuildLocation, BuildOptions defaultBuildOptions) [0x0007f] in D:\unity\Editor\Mono\BuildPlayerWindowBuildMethods.cs:97
UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
一个奇怪的问题,因为在我之前打包时没有出现过。把打包的Build System改为Gradle后就没有这个报错了。但我之前使用Internal打包的时候并没有这个报错~
报错2:
CommandInvokationFailure: Gradle build failed.
C:\Program Files\Java\jdk1.8.0_112\bin\java.exe -classpath "D:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-4.2.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleRelease"
stderr[Temp\gradleOut\src\main\AndroidManifest.xml:10:205-236 Error:
Attribute application@icon value=(@mipmap/app_icon) from AndroidManifest.xml:10:205-236
is also present at [:app-debug:] AndroidManifest.xml:19:9-42 value=(@drawable/app_icon).
Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:10:3-23:17 to override.
这个是因为Plugins文件夹下的AndroidManifest.xml和arr包里的AndroidManifest.xml有冲突,更正方法是在Plugins文件夹下的AndroidManifest.xml中添加两行——
xmlns:tools="http://schemas.android.com/tools"
tools:replace="android:icon, android:theme"
添加位置见下图——
报错3:
attr/colorPrimary)' not found.
attr/colorPrimaryDark)' not found.
attr/colorAccent)' not found.
因为对安卓不熟,我没有特别好的解决办法,直接把arr里res/values/values.xml里的变量全部删掉,就留表头和表尾——
报错4:
.gradle\caches\transforms-1\files-1.1\app-debug.aar\\res\layout\activity_main.xml:9: AAPT: error: attribute layout_constraintBottom_toBottomOf (aka :layout_constraintBottom_toBottomOf) not found.
也是用压缩软件修改arr包,把arr/res/layout/activity_main.xml里把res-auto自适应修改为自己工程的包名——
报错5:
Dex: Error converting bytecode to dex:
使用Internal打包时,是这么报错的——
CommandInvokationFailure……
Error:Invalid command dx
exit code: 64
UnityEditor.Android.Command.WaitForProgramToRun……
这个属于Unity官方对SDK的支持BUG。我是把Unity升级为2018.4.10 f1后就没有这个问题了。
Unity历史版本下载地址——
里面有更新日志,说这个BUG在后期被修复了