1. 程式人生 > >Android基於jenkins全自動構建打包---------Windows版本(Android,Jenkins,360加固,Email,QRcode,引數構建,蒲公英)

Android基於jenkins全自動構建打包---------Windows版本(Android,Jenkins,360加固,Email,QRcode,引數構建,蒲公英)

 Android打包喝咖啡系列(Windows版)

這篇部落格主要講述的內容:

  1、windows上部署Jenkins https://jenkins.io

  2、基於SVN或Git https://github.com/Codetroupe/JenKinsTestAPP

  3、Android專案引數化自動構建

  4、自動將APK上傳至蒲公英 https://www.pgyer.com

    5、自動發Email到指定郵箱提示構建結果

  6、自動本地360外掛加固apk包http://jiagu.360.cn 

下面開始正式內容,慣例先上一張介面圖:

   

 

  第一步:windows上部署Jenkins並配置環境

  1、開啟官網https://jenkins.io  

  點選download,建議下載左邊的穩定版,右邊的踩過坑,莫名其妙報了個錯,然後重灌。選擇windows版下載,得到一個安裝程式,安裝完成後自動開啟服務

  輸入http://localhost:8080

  按著順序,輸入金鑰,然後點選推薦外掛,靜靜等待一段時間。

  

  當你進入下面這個頁面的時候,就部署成功了,輸入賬號密碼,admin的密碼好像也是admin,我這裡自己設定了賬號Test

  

  登入賬號

  2、配置環境變數

  好了,這步開始要認真看了,不然很容易GG ,先不要急著建立專案,我們先配置一些環境變數

  a、安裝外掛

    點選---->

    安裝外掛:

    build-name-setter      作用:修改構建名稱

    description setter plugin   作用:修改構建目錄的描述

    Email Extension Template Plugin   作用:Email模板編輯

    Locale plugin    作用:修改Jenkins預設語言

    

Timestamper    作用:動態獲取時間

    Upload to pgyer    作用:將APK上傳到蒲公英

  b、系統設定

     點選---->

    如下圖:

    Date and Time Pattern 時間的顯示格式(構建引數的時候需要用到)

    環境變數分別是:

      360加固外掛的根目錄(這個是360加固外掛的目錄,本機電腦上也要配環境變數。如果你不喜歡用360,那就換成你喜歡的就可以了,注意一定要可以使用DOS命令列進行加固的外掛,這裡是用DOS命令列進行apk加固,如何配置賬號密碼和加固渠道去官網檢視就可以,講得很詳細)http://jiagu.360.cn/#/global/help/164  跟著教程先本地打包一次,確定配置是否成功,再繼續進行下面步驟

      SDK的根目錄(目錄位置不知道的可以從Android studio檢視,快捷鍵Ctrl+shift+Alt+s)

      java根目錄

    Default Language 這個是Jenkins語言設定。

    

 

   系統管理員的郵箱一定要設定,這是個坑,要是不設定,你的郵箱怎麼配置都不會觸發,Jenkins URL則是訪問地址安裝的時候會要求設定,我這裡是設定成本機電腦ip,這樣區域網內別的電腦也可以訪問。

  

  下面是郵箱設定,根據如圖所示設定應該沒什麼問題,SMTP server根據你的郵箱伺服器來設定即可

  

 

  

  郵件模板,這個模板的資訊基本夠用。

標題:
[Jenkins構建通知]$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS! 內容: (郵件由Jenkins自動發出,請勿回覆~)<br> 專案名稱:$PROJECT_NAME<br> 構建編號:$BUILD_NUMBER<br> 構建狀態:$BUILD_STATUS<br> 觸發原因:${CAUSE}<br> 構建地址:<A HREF="${HUDSON_URL}/job/${PROJECT_NAME}/${BUILD_NUMBER}/">${HUDSON_URL}/job/${PROJECT_NAME}/${BUILD_NUMBER}/</A><br> 構建輸出日誌:<a href="${HUDSON_URL}/job/${PROJECT_NAME}/${BUILD_NUMBER}/console">${HUDSON_URL}/job/${PROJECT_NAME}/${BUILD_NUMBER}/console</a><br> 下載地址:<a href="https://www.pgyer.com/projectname">https://www.pgyer.com/projectname</a><br><br> 二維碼下載:<img src="https://www.pgyer.com/app/qrcode/projectname"/><br> 最近修改:<br>${CHANGES, showPaths=false, format="%a:\"%m\"<br>", pathFormat="\n\t- %p"}

  好了,到這裡系統設定就配置完成了,點選應用,儲存

   c、全域性工具配置

  點選-->

  只需要配置Gradle即可,我配置的是Android Studio預設使用的Gradle

  

   到這步為止,環境的配置準備就完成了,環境配置其實挺簡單,沒什麼複雜的地方,細心一點不要漏了地方就可以了。

   第二步:建立專案,測試構建結果

  a、建立專案

  回到首頁,點選建立一個自由風格的軟體專案,命名為JenkinsTestApp

  

  點選確定,進入專案配置頁面

  首先配置原始碼管理,如果你使用我的github的原始碼,那麼不需要輸入賬號密碼,只需要複製git連結即可,如果是私有庫,則點選add可以增加賬號密碼憑據,只輸入username和password即可

  

  然後配置構建,選擇Invoke Gradle script

  

  根據圖示內容配置,gradle-4.4即剛剛在全域性工具裡配置的Gradle

  點選展開Tasks,然後輸入

clean
assembleDebug
--stacktrace
--debug

  輸入完上面內容後,展開高階內容,勾選windows一定要勾選,不然構建失敗,這個選項就相當於Android Studio的Gradle的快取目錄,如果專案多,懶得勾選,則可以在第一步的系統設定中的環境變數中配置GRADLE_USER_HOME環境,本地找個資料夾即可(最好使用Android Studio的Gradle預設快取目錄)

 

 

 

 

  點選應用,儲存,然後點選即可進行構建,如圖構建成功,可以進去檢視日誌,或者到工作空間去檢視生成的apk包,我的工作空間的目錄 D:\Software\Jenkins\workspace\JenkinsTestApp\app\build\outputs\apk\debug,可以看到我構建了4次才構建成功,因為第一次忘記勾選快取目錄,第二次是構建release,沒有注入簽名檔案的引數,後面會慢慢敘說,第三次次忘記去除debug構建的signingConfigs

嗯,到了這裡,基本用Jenkins對Android專案打包是基本實現了。不是新建一份Android專案上傳到git就可以打包的,需要進行一定的配置,具體自己可以檢視我github上的原始碼,有註釋也算是比較清晰。

 

  

 

 

  這時候你可能會想了,前面配置的環境和搭建的Email模板和360加固怎麼都沒用上,先不用著急,有階段性的成功,才有繼續下去的動力,想想我之前剛開始弄的時候,這部分都被搞得一臉懵,看一些部落格,不是寫漏了一些關鍵點,就是不附帶參考原始碼,這讓人很是煩躁,總是差這麼一點點,然後自己慢慢找慢慢推敲,對會弄的人來說,他們的教程是都很好的,我現在回去看,一眼都能get到點,但是對初次接手Jenkins的人來說,真是很無奈,我想我這篇部落格應該算是清晰的了。

 

  好,我們繼續往下看。

   b、引數化構建

  這一部分還是很好玩的,引數構建我覺得是個比較神奇的東西,回到專案配置的General勾選引數化構建過程

  

  點選新增引數,我用到的引數如下:(這裡可以自己熟悉了以後,不斷地新增引數構建,完善專案)

  名稱:BUILD_TYPE

  選項:debug release  (注意選項引數要回車換行)

  這個是選擇release版構建還是debug版構建使用

 

  

  名稱:JENKINS_TIME

  預設值:$BUILD_TIMESTAMP   (這是呼叫Jenkins環境變數的語法)

  這個是包名的時間戳,就是在環境變數裡勾選的外掛

  

  名稱:IS_JENKINS

  預設值:true

  如描述,這個引數方便Jenkins打包或者手動打包

  

  名稱:APP_VERSION  /  JENKINS_BUILD_NUMBER

  預設值:1.0.$BUILD_NUMBER  /   $BUILD_NUMBER    (呼叫環境變數的構建序號)

  這兩個引數分別是APP的版本號和程式碼版本號

  

 

  名稱:APP_STORE_FILE_DIR  /  APP_STORE_PASSWORD

  預設值:D:\AndroidProject\key\JenKinsTestKey.jks  /  kk123456

  這兩個引數分別是簽名檔案所在的路徑和簽名檔案的密碼(簽名檔案生成應該不用說了,搜都能搜出一大把了)

  

  名稱:APP_KEY_ALIAS  /  APP_KEY_PASSWORD

  預設值:test1  /  kk123456

  這兩個引數是簽名檔案子檔名稱和子檔案密碼

  

  名稱:REINFORCE_FOR_360

  選項:2  1  (注意選項引數要回車換行)

  這個引數表示是否啟動360加固APP

   

  名稱:APK_NAME  

   預設值:JenkinsTestApp

   用於獲取構建生成的包的名字,需要和重新命名的包名一致,不然無法找到檔案(後面有詳細說明)

  

 

 

   引數配置完成,可以自己持續新增自己需要的引數,也可以自己更改引數名稱,但是更改的引數名稱要和Android專案中gradle.properties檔案中的引數名對應,有些需要預設引數,簽名檔案為了安全儘量不要填寫預設密碼

#是否是Jenkins打包
IS_JENKINS = false
#Jenkins打包時間戳
JENKINS_TIME = ''
#APP版本號
APP_VERSION= 1.0.0
#APP程式碼版本號
JENKINS_BUILD_NUMBER = 1
#APP簽名檔案資訊
APP_KEY_PASSWORD = ""
APP_STORE_PASSWORD = ""
APP_KEY_ALIAS = ""
APP_STORE_FILE_DIR=""

  在構建中,把Tasks中的Debug改成${BUILD_TYPE}呼叫剛剛配置的引數,勾選Pass all job paramenters as Project properties 把引數注入到專案中

  

點選應用,儲存,會發現專案首頁的立即構建變成了Build with Parameters,點選則出現右側引數列表,選擇release嘗試構建。不出意外,構建成功,這裡就不截圖了。

  

   到此為止,引數化構建就已經部署成功了,分為debug模式和release模式,其他模式自己可以新增

   我們繼續優化一下專案配置結構

  丟棄舊的構建,如圖所示

  

   觸發構建器

  每隔10分鐘檢查資源庫是否有提交更新,有更新則進行構建

*/10 * * * *

 

  

  構建環境

   修改構建列表的名稱,便於觀察

#${BUILD_NUMBER}_${BUILD_TYPE}_V-${APP_VERSION}

 

 

  c、360加固apk

   360加固APK是根據自己寫的一個.bat檔案,然後通過Jenkins呼叫進行加固,寫的時候可以說是嘔心瀝血了,因為不熟練.bat的編寫格式,踩了很多坑

  首先在構建中加入執行Windows批處理命令

  呼叫引數的方式有點區別,在Jenkins呼叫變數引數用$xxxx  Windows批處理命令則用%xxxxxx%

  下列呼叫的都是上面定義的引數,其中%WORKSPACE%是預設環境變數的 工作空間目錄

 

jenkins_apk_doing.bat %BUILD_TYPE% %JENKINS_BUILD_NUMBER% %APP_VERSION% %JENKINS_TIME% %REINFORCE_FOR_360% %WORKSPACE% %APK_NAME%

 

  

  哈哈,應該沒有人會以為這一句命令程式碼就可以執行360加固了吧,下面開始重頭戲

  找到360加固外掛的根目錄D:\Software\jiagu,建立一個text文件命名jenkins_apk_doing,然後把字尾改成 .bat,然後用記事本開啟輸入下面程式碼

@echo off

SET typed=%1
SET num=%2
SET ver=%3
SET time=%4
SET or=%5
SET dir=%6
SET projectname=%7

echo param[1] =%1
echo param[2] =%2
echo param[3] =%3
echo param[4] =%4
echo param[5] =%5
echo param[6] =%6
echo param[7] =%7

cd /d %~dp0 

if %or%==1 goto todoingreinforce 
echo.
exit


:todoingreinforce
start D:\Software\jiagu\java\bin\java -jar jiagu.jar -jiagu %dir%\app\build\outputs\apk\%typed%\%projectname%-%typed%-v%ver%#%num%-%time%.apk D:\Software\StrengthenedAPK\ -autosign -automulpkg
echo.
exit   

 

  如果看不太懂,沒關係,只要把路徑改一改就可以了,注意有個地址是D:\Software\StrengthenedAPK\這是我D盤目錄下的資料夾,是用來放加固好的APK檔案的,如果你看了360加固助手官方文件,應該基本看得懂start後面的語句,也就是DOS命令下執行加固的命令,有了這個檔案以後就可以進行360加固打包了,去試一下吧,構建完以後在D:\Software\StrengthenedAPK\(需要手動建立資料夾)目錄下應該是有加固好的apk檔案了

  

 

   d、將APK包上傳到蒲公英https://www.pgyer.com

     註冊賬號,登入

    點選--->

 

   獲取API KEY 和 USER KEY

  

  然後將Key填入對應的空格

  scandir:${WORKSPACE}\app\build\outputs\apk\${BUILD_TYPE}

  file wildcard:${APK_NAME}-${BUILD_TYPE}-v${APP_VERSION}#${JENKINS_BUILD_NUMBER}-${JENKINS_TIME}.apk

  

  點選應用,然後儲存構建,即可上傳到蒲公英,就是這麼簡單,構建成功後檢視日誌

  

  可以獲取應用頁面,拿到二維碼連結和下載連結,也可以去蒲公英檢視

  蒲公英會生成一個專屬頁面,可以檢視標籤去獲取二維碼連結和下載連結

  

  拿到二維碼連結和下載連結以後,就可以修改描述頁面和構建名稱了

  在構建和操作中新增Set build description

<img  src="https://www.pgyer.com/app/qrcode/xxxx"/> <br>下載地址:<a href="https://www.pgyer.com/app/qrcode/xxxx">APK下載連結</a><br>

  

  現在再去進行構建,你就會發現有很美觀的介面了,看吧,已經有二維碼了,可以直接掃碼安裝測試

  

  e、構建完成後發郵件

  在構建後操作新增Editable Email Notification,預設部分不需要更改,因為內容在配置系統設定的時候已經配置好,如果要動態增加接收人的郵箱,在Project Recipient List 中加入郵箱即可用 ,隔開,點選底部的Advanced Settings設定觸發條件。即可傳送郵件到指定郵箱。可以根據自己的需要配置郵箱觸發事件,如果不配置則不會發送郵箱

  

  

  點選應用儲存,然後進行構建,一段時間後,就能收到郵件了,如果你是區域網電腦開啟郵件,就可以直接訪問構建日誌和構建目錄了,這樣其他開發者也可以看到結果,不用自己去看是否構建完成。點選構建就可以喝咖啡了(雖然我不喝咖啡)。

  

  好了,到這裡全部內容就寫完了,寫了大概半天的時間,出部落格挺快的,自己琢磨了大概一週,遇到各種坑,希望對大家有幫助,大家看完試著搭建一下,然後有坑可以留言一下,可以把構建次數發一下,我看下你們構建了幾次才完全成功,看吧,我重新構建都構建了20次。說明確實很多東西容易忽略,Jenkins搭起來以後就不需要自己去處理簽名檔案什麼的,一次搭建以後都方便用,順帶提一下,蒲公英免費版做測試還是很不錯的,要是商用,就自己測試一下吧,我是有時候會上傳失敗,多點幾次也可以上傳上去。

   

 版權所有,如有轉載請註明出處,謝謝