网上已经有很多Jenkins的文章了,看了很多,实践起来,还是有很多的问题,各种折腾,终于算是告一段落,记录下,方便以后查阅。
Jenkins的安装使用,麻烦移步https://blog.csdn.net/zhuyb829/article/details/78899465,谢谢博主,帮了很多忙。
刚接触自动打包的时候,一脸愣比,不知道如何下手,所以在埋坑之前,强调说明一点,纠正下思维习惯,可以把Jenkins当成网页编译器,通过编译之后,再进行一系列操作,就可以达到各种目的(懒人专利)。所以,可以把Jenkins当成是编译器,所有的操作,其实和Android studio类似,只是一个使用时更加地偏向于测试人员使用,配置的时候,更偏向于终端的一个工具。所有的源码,一般在workspace里可以找到,当然,也可以通过权限操作,使之只给部分人查阅,这是后话。
下面详细说明遇到的一些坑,以及解决方法。
1.aapt2 Exception
遇到这个坑感觉是十分无奈,因为网上能查到的解决方法,基本无效,幸好坚持尝试,在一个哥们的博客里找到了解决方法。错误信息如下:
很抱歉没有记得那个博主的文章地址,见谅。这个错误很可能是由于Jenkins引用的gradle缓存路径过长导致的。
解决办法:
如上图所示,在工程->配置->构建->高级选项中,把这个勾选上,就OK了。这个勾选,是强制Jenkins使用workspace的工作路径。
2.上传fir
这个可以说是有点坑了,当前fir在github上的版本,可能在上传的时候,会报错。官方文档地址:http://blog.fir.im/jenkins/。
这个错误目前还不知道怎么解决,但是万能的网友不是吹的,据说使用老版本就没问题,这个百度一下应该可以搜得到,就不贴上来了。具体操作具体看下官方文档就可以了,甚至连Jenkins的安装使用都说了一遍。
3.记录一下gradle的一些操作指令
这个不是坑,但是对于几个月就忘事的我而言,还是很有效的。
基本的指令:
clean 清理build缓存
assembleRelease 编译正式包
assembleDebug 编译Debug包
扩展指令
--no-daemon
禁用守护进程 原本以为和一个Exception有关,但是根据其他博主的方法,使用这个并没有什么用,先记下来吧
--offline
离线模式,当依赖没有变化,先不使用offline编译一遍,把依赖下载完成后,打开offline模式,编译速度绝对提升一大截,尤其是大项目依赖多的情况下。
--debug
debug模式,与之类似的还有--info 等等。
4.参数构建
这个相当实用,可以用参数构建,搭建各种配置,版本号,打包环境,打包分支等等,不一一详述。主要方式就是搭建完参数后,在bulid.gradle里增加代码接收参数。build.gradle里接收参数的方法就一句代码:
System.getProperty("[你在Jenkins定义的参数名]")
然后根据需要,使用传入的参数,改写自己原本的参数,就达到了配置的目的。
问题在于,有个小地方很可能会被遗漏,那就是开启参数注入(大概这个意思)。在工程->配置->构建->高级选项中,勾选Pass all job parameters as System properties,Jenkins就会帮你透传你所有设置的参数。当然,据说部分版本没有这个选项,那就可以忽略了。
5.遗留问题
看完基础教程,再看到这里,基本不会有太多问题了,但是我还是遇到了一些问题,工程要求使用不同的环境打包,要上传到不同的fir账号上,这种情况下,除了分开两个工程配置,或者用命令行上传(前提是拿到fir的上传接口),目前没有更好的办法,求大神指教。