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

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

pass 過程 wpa 命名 就會 serve 輸入 9.png \n

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搭起來以後就不需要自己去處理簽名文件什麽的,一次搭建以後都方便用,順帶提一下,蒲公英免費版做測試還是很不錯的,要是商用,就自己測試一下吧,我是有時候會上傳失敗,多點幾次也可以上傳上去。

  

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

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