1. 程式人生 > >Jenkins Android自動打包釋出埋坑

Jenkins Android自動打包釋出埋坑

網上已經有很多Jenkins的文章了,看了很多,實踐起來,還是有很多的問題,各種折騰,終於算是告一段落,記錄下,方便以後查閱。

剛接觸自動打包的時候,一臉愣比,不知道如何下手,所以在埋坑之前,強調說明一點,糾正下思維習慣,可以把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的上傳介面),目前沒有更好的辦法,求大神指教。