Unity5.5.4f1导出Gradle工程到AndroidStudio3.1.3(随笔)
一开始遇到各种报错,后来发现改动却很少,原来我巧妙的绕了个圈。
一、AS3导入Unity导出的常规gradle工程
1.AndroidStudio安装,使用Custom安装,自定义sdk目录,安装完成后设置gradle的离线路径。
2.Unity导出Gradle工程,注意jdk不要太新我用的是jdk18.x.x,sdk的tools不要太新使用24.x.x版本,ndk使用推荐版本ndk-e10-xx,正常导出问题不大。
3.AndroidStudio导入unity导出的项目时,必须选择Import project(Gradle, Eclipse ADT, etc),这样会自动帮你完善gradle工程目录结构。导入时提示use the Gradle wrapper选择OK吧,迟早都要下载的,进入之后估计会直接看到:
错误1:“No cached version of com.android.tools.build:gradle:2.1.0 avalilable for offline mode”。
原因:本地没有下载gradle插件版本为2.1.0的。这里有两个概念gradle版本和gradle插件版本。
解决方案:打开./gradle/wrapper/gradle-wrapper.properties,修改distributionUrl中的xxx/gradle-4.4-all.zip为xxx/gradle-2.10-all.zip,点击右上方快捷菜单Sync Project xx 重新同步(如果不行就重启AS),此时会自动下载gradle-2.10-all.zip,下载完成后编译成功。
4.这样,AS3中可以正常运行Unity导出的gradle工程了,告一段落。
二、AS3制作AndroidLibrary(jar包) 导入Unity
1.制作过程参考这个链接
三、Unity再次导出Gradle工程(包含plugins中的jar包),AS3中编译执行
1.AS3导入后先按前面的方法修改gradle-wrapper.properties中gradle版本号为2.10,编译后报错:
错误2:“Error converting bytecode to dex: Cause com.xx.xx.DexException: Multiple dex files define Lcom/xx/xx/BuildConfig”。
原因:工程中包含多个BuildConfig类,查看刚才导出的jar包可以发现里面竟然有一个。
解决方案:回到Unity的Plugins下的lib文件夹下,使用命令行将BuildConfig文件从jar中删除,重新导出gradle工程,修改gradle-wrapper.properties后,编译成功。
四、AS3中其他问题
1.使用腾讯GCloudVoice时运行后无法应用启动,查看Logcat发现有错误抛出。
错误3:“system err : load library GCloudVoice faild !!!”。
原因:GCloudVoice中包含*.so文件导入AS3后路径在libs下,而且gradle并未对其设置。
解决方案:将*.so文件目录搬移到GCloudVoice/src/main/下,或者在build.gradle的android/.sourceSets/main 添加jniLibs.srcDirs = ['libs']即可。如果还不行,参考这里。
网友评论