Unity2017安卓编译问题二三事

这两天开始搭建Unity开发环境。

之前都在用公司电脑,家里电脑很久没用在开发上,之前搭的环境时过境迁,果然又冒出新问题来,止不住的折腾人。

拿之前的工程试编下APK,报了以下错误:

 

 

 

 

SDK Build Tools version 23.0.1<25.0.0

原因是SDK版本太老旧,由于运行SDK Manger去更新,发现这个工具一运行就闪退。在网上找到解决方法,将\sdk\tools\android.bat 里的java.exe文件路径改成本机绝对路径,就可以打开了。

但打开后发现软件并没有新的SDK可更新,这就很困惑了,Unity明明报说需要新包。无奈,自己上网搜了下,是有更新的包,于是在CSN上下了个25.0.0的包,解压放进子目录下,心想这下可以了吧,还是太天真,运行Unity后又报同样错误.心想是不是Unity不认自己解压的包.

后面就是一堆折腾,又是百度,又是谷歌,还装了Android Studio,虽然不知道它怎么用.金诚所至,金石为开.偶然翻到一篇文章才解了以上困惑.原文地址:https://www.jianshu.com/p/166a2d07f99b,原来用SDK Manager工具更新Android SDK的更新方式,只在android-sdk_r24.4.1-windows.zip之前,在这之后就没这个工具了,自然它也看不到之后的新包体信息.由于谷歌在大陆被墙,所以无论是在命令行中用dos命令更新,还是用Android Studio里的相关功能,均更新不到,即使用了VPN软件.这也解释了为什么外国人和我的台湾同事很少碰到类似问题.(搜到更多的是另一个:/sdk/tool,用了新版,而要还原成tools_r25.2.5的问题).而我在CSN上下载的包,只是部分资源,虽然装上了,Unity也认为没更新到位.

上述文章中的方法虽然麻烦点却能解决问题.费了些工夫把包下到,更新好,这个问总算得以解决.碰到类似问题需要更新SDK的朋友可以去这里下载sdk_24-28的资源


在装好NDK后,指定编译版本类型为IL2CPP,编译过程又报了以下错误:

CommandInvokationFailure: Gradle build failed.
C:/Program Files/Java/jdk1.8.0_161\bin\java.exe -classpath “D:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\gradle\lib\gradle-launcher-4.0.1.jar” org.gradle.launcher.GradleMain “-Dorg.gradle.jvmargs=-Xmx2048m” “assembleRelease”

stderr[

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring root project ‘gradleOut’.
> Failed to find Build Tools revision 28.0.0

* Try:
Run with –stacktrace option to get the stack trace. Run with –info or –debug option to get more log output.

BUILD FAILED in 2m 5s
]
stdout[
Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use –status for details
NDK is missing a “platforms” directory.
If you are using NDK, verify the ndk.dir is set to a valid NDK directory. It is currently set to F:\adt-bundle-windows-x86_64-20140702\sdk\ndk-bundle.
If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning.

Observed package id ‘build-tools;20.0.0’ in inconsistent location ‘F:\adt-bundle-windows-x86_64-20140702\sdk\build-tools\android-4.4W’ (Expected ‘F:\adt-bundle-windows-x86_64-20140702\sdk\build-tools\20.0.0’)
Observed package id ‘build-tools;24.0.3’ in inconsistent location ‘F:\adt-bundle-windows-x86_64-20140702\sdk\build-tools\android-7.0’ (Expected ‘F:\adt-bundle-windows-x86_64-20140702\sdk\build-tools\24.0.3’)
……
……
java.net.ConnectException: Connection timed out: connect
IOException: https://dl.google.com/android/repository/addons_list-3.xml
java.net.ConnectException: Connection timed out: connect
IOException: https://dl.google.com/android/repository/addons_list-2.xml
java.net.ConnectException: Connection timed out: connect
IOException: https://dl.google.com/android/repository/addons_list-1.xml
java.net.ConnectException: Connection timed out: connect
Failed

这里分成两部分内容:后面这个”Observed package id ‘build-tools;25.0.3’ in inconsistent location ‘F:\adt-bundle-windows-x86_64-20140702\sdk\build-tools\android-7.1.1’ (Expected ‘F:\adt-bundle-windows-x86_64-20140702\sdk\build-tools\25.0.3’)”能看懂是我解压SDK后,放入文件夹时文件名没改,于是根据提示一一订正.

另一个内容是:”A problem occurred configuring root project ‘gradleOut’.
> Failed to find Build Tools revision 28.0.0″,在谷歌上找到解决方法:打开Android Studio,file -> setting -> SDK Tools,卸载带version 28.0.0rcl的工具,然后重编就可以了.

至此,Unity2017的开发环境就装好了.