彻底解决Jenkins针对Unity2018.4以后的版本及2019+Gradle报错打不出包的问题

我同你一样,看到了曙光!

1.既然问题有解决方案了,那就先吐槽一下自己的不忿吧,哈哈哈。
首先呢我之前是用2018.4.0一以下版本的Unity,Jenkins可以完美打包。因为他不需要考虑Gradle。
后来呢我工作中开始使用了高版本Unity 例如2018.4.14的及2019的版本,我毅然而然的接下了任务。
本想着半下午就搞定了,可意外的真的是个意外,竟然打不出包,这可尴尬死了,活都接了咋办啊,还能退吗?哈哈,结果搞了3-4天,工作版本仍不能正常出包,难受的一批,一直卡在Gradle失败那里,死活出过不去。但2018.4.0的却一直可以,我到处去搜解决方案,心里极度崩溃。一直在崩溃的边缘疯狂试探,看看旁边的窗户…还是个阴天。
刚好今天放假回家没事想着撸一把放松下,想着下载资源也没事,就随便查查问题,毕竟事情压在身上干啥都不舒服,最终惊喜还是来了,我找到了解决方案,我仿佛看到了曙光! 泣不成声!哈哈哈
附上解决方案:
环境
Unity2018.4.14f1 Windows

Jenkins 部署于Windows10

注意事项
Jenkins 需要配置 JDK。Gradle不需要在Jenkins配置安装,但需要配置环境变量 GRADLE_USER_HOME ,下边会说到。

由于Unity2019只能通过Gradle构建apk,所以打包出现的问题的地方 多出现在 Gradle 上同理适用于2018有Gradke问题的版本上。

首先,我们找到Unity的Gradle模板,这是我的路径

D:\Program Files (x86)\Unity2018.4.14f\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates

打开这些模板文件可以看到Gradle版本是3.4.0。如果机器上没有Gradle3.4.0的相关资源,第一次打包,会自动下载Gradle 3.4.0的资源。由于这些资源被屏蔽在墙外,可能会造成打包失败。解决方案有俩个,1.打开VPN翻墙。2.修改GradleTemplates,使用国内镜像下载。这些都配置好了,可能还会出现 Execution failed for task ‘:mergeReleaseResources’ 错误。这个问题可能是资源路径超长的问题,需要配置 环境变量GRADLE_USER_HOME。这个问题困扰我三天,据说只有在Windows版本的Jenkins会出现。具体解决方案如下:
解决方案一:.

打开VPN 此方法需要自行百度或GitHub下载VPN工具,注意:此方法根据你的VPN和网速决定,如果VPN不好的情况下,还是有失败几率的,不过大部分都能成。

解决方案二:

关键词
安卓 android unity 2019 gradle 失败

问题背景
unity2019自带了构建安卓包的一切工具,可谓是非常方便(估计国外是这样),但这个构建过程(即gradle)需要临时从国外网上抓取一些资源,当这些资源抓不来的时候,整个构建过程会卡很长时间并以失败告终(错误信息会告诉你哪些资源没搞到)

解决方案 A
由于需要的资源国内是有镜像的,所以解决这个问题只需要将国内镜像添加到构建过程中即可。

具体实施
将2019自带的安卓构建工具安装好后,可以找到类似如下目录:

D:\Program Files (x86)\Unity2018.4.14f\Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates

主要是找到GradleTemplates这个目录(里面的文件就是Unity采用Gradle构建安卓包时采用的模版文件,这些文件中表达了资源从哪里获取)。
由于2019.1到2019.3在这个目录中组织文件到方式有些差异,所以这里没有统一的改法,但只需要遵循一条原则即可:

只要这个目录中的文件中含有repositories,就在这个区块的第一行插入
maven{ url ‘http://maven.aliyun.com/nexus/content/repositories/central/’}
这就是国内镜像,构建时,会优先从这里获取资源。
大概像下面的样子:

repositories {**ARTIFACTORYREPOSITORY**
    maven{ url 'http://maven.aliyun.com/nexus/content/repositories/central/'}
    google()
    jcenter()
}

注意:一定把那个目录中所有文件相关的地方都插上那个镜像。

解决方案 B
在这里插入图片描述
在这里插入图片描述
具体实施
勾选ProjtectSetting->Player->Publishing Settings->Build->Custom Template
根据提示会得到一个gradle配置文件位于Assets/Plugins/Android/mainTemplate.gradle,将此文件中的repositories都按解决方案A修改即可。

解决方案 C**
如果你还不行 报*****APP2错误的话 建议把 Unity\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\GradleTemplates 文件下的Gradle换成低版本的 博主这里就是因为这个原因,换成3.0的就行了。
大公告成

这时候可以回到Jenkins去重新构建你的项目了。

博主走到这里就解决了

当然 如果不行 请往下走↓

解决方案三:

配置Jenkins,没有加复杂的参数设置,最基本的build都fail,本地Android studio编译通过,这跟Unity把版本有关,版本低的自然不会这样,高的则会。log 如下,

C:\Windows\System32\config\systemprofile.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.1.0.aar\05c0b4777c5dc48a4a10adf8ff0bb34a\res\drawable-hdpi-v4\abc_ic_menu_share_mtrl_alpha.png: error: file not found.

C:\Windows\System32\config\systemprofile.gradle\caches\transforms-1\files-1.1\design-26.1.0.aar\8618dd80b49572c8bf351aec2a95032c\res\layout\design_navigation_item.xml: error: file not found.

C:\Windows\System32\config\systemprofile.gradle\caches\transforms-1\files-1.1\appcompat-v7-26.1.0.aar\05c0b4777c5dc48a4a10adf8ff0bb34a\res\layout\abc_action_bar_up_container.xml: error: file not found.

C:\Windows\System32\config\systemprofile.gradle\caches\transforms-1\files-1.1\play-services-base-9.0.2.aar\3bac6c3e2556d905514d01e21e6c6704\res\drawable\common_google_signin_btn_text_dark.xml: error: file not found.

网上很多答案都是,在gradle.properties中加入android.enableBuildCache=false和android.enableAapt2=true,但是并没有用。而且BuildCache去掉了还是会影响build的。https://stackoverflow.com/questions/43674890/jenkins-gradle-appmergedebugresources-unable-to-open-png-file/51320353#51320353

上面fail的原因应该是路径过长,Windows下Jenkins首先就去C:\Windows\System32\config里找,而我们知道.gradle本身是在C:\Users\someuser路径下的,所以只要在Jenkins --> Manage Jenkins --> Configurate System下,增加一个Environment Variable,健:GRADLE_USER_HOME,值:C:/Users/someuser,同时在Windows的环境变量里也添加一个同样的。就可以了。

最后这个bug在Windows10上有,Mac上没有。

后记,今天偶然发现的,不需要设置USER_HOME环境变量,只要在job config的build中,勾选 Force GRADLE_USER_HOME to use workspace即可。
在这里插入图片描述
此博客为收藏 记录 ,非原创,如有侵权请联系删除。
只为以便以后有不时之需,或有同样的和博主一样处于困苦的人。
附上链接:
Unity2019 Jenkins Android 打包
关于Unity2019无法构建安卓的解决办法
Windows+Jenkins+Gradle+Android,解决C:\Windows\System32.png error: file not found问题

努力积才能,壹叶便成名。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

铸梦xy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值