Android直接用手機打包apk!



 

你沒有看錯,用手機瀏覽器訪問Jenkins,就可以打包apk,並生成下載二維碼,發送郵件通知測試人員下載,從此解放雙手,告別打包測試。先上本人手機郵箱收到的打包成功通知效果圖:

 
 

廢話少說,開干!

本人用的是Mac,以下操作都是在Mac環境下配置的,Windows環境的配置移步到Android使用Jenkins自動化構建測試打包apk

一、安裝Jenkins

打開mac終端(本人用iTerm2),輸入 brew install jenkins,brew命令得安裝Homebrew,安裝方法移步Mac終端軟件安裝利器:Homebrew

 
 

一會兒jenkins就裝好了,默認安裝路徑為/usr/local/Cellar/jenkins,在終端輸入 jenkins啟動jenkins

 
 

第一次啟動jenkins會提示一個秘鑰,登錄控制台要用到,也可以在路徑/Users/用戶名/.jenkins/secrets/initialAdminPassword下查看秘鑰

 
 

在瀏覽器輸入localhost:8080可以登錄jenkins控制台,輸入剛才的秘鑰,點擊繼續

 
 

插件安裝選推薦的就好了

 
 

等待自動安裝完成

 
 

創建一個管理員用戶,保存並繼續

 
 

設置Jenkins URL,默認為localhost,改成自己電腦的IP,即http://IP:8080,點擊保存並完成

 
 

點擊開始使用Jenkins,就可以進入控制台

 
 

二、配置jenkins

點擊 系統管理--系統設置

 
 

拉到全局屬性,勾選環境變量,添加鍵值對配置Android SDK

 
 

找到系統管理員郵件地址,輸入自己的郵箱

 
 

找到郵件通知,如下配置,qq郵箱的SMTP服務器為smtp.qq.com,其他郵箱的自行百度

 
 

記得勾選使用SMTP認證,密碼不是你的qq密碼,而是郵箱服務器密碼,可以到郵箱查看郵箱服務器密碼,打開qq郵箱,點擊 設置--賬戶 拉到如下位置

 
 

點擊開啟POP3/SMTP服務,如果之前已經開啟了,先點擊關閉再點開啟,提示要驗證密保

 
 
驗證完后就可以看到郵箱密碼了
 
 
勾選 通過發送測試郵件測試配置 測試一下郵箱是否配置成功,輸入你的郵箱,點擊Test configuration,配置成功會提示Email was successfully sent,並且郵箱會收到一條信息
 
 
 
 

由於jenkins自帶的郵件通知樣式過於單調,而且不好用,所以我們用郵件擴展功能來自定義,拉到Extended E-mail Notification(沒有這個選項的就是沒裝插件,主界面打開 系統管理--插件管理--可選插件,右上角搜索Email Extension Plugin進行安裝),如下配置,跟剛才配置差不多

 


勾選Require Administrator for Template Testing,點擊右邊的Default Triggers...

 
 
勾選如下三個選項,這樣構建成功或失敗都會發送郵件通知
 
 

點擊保存,完成系統設置

 
 

接下來配置一下Gradle

 
 
找到Gradle,添加GRADLE_HOME,路徑參照我的路徑,找到自己電腦上的gradle
 
 
接下來開始新建任務,點擊新建任務,如下操作
 
 
我的視圖中可以看到新建的任務
 
 
點擊右邊任務進入任務詳情
 
 

用Android Studio打開svn項目,在gradle.properties添加如下配置

APP_VERSION = 1.0.0
IS_JENKINS = true
BUILD_TYPE = release
PRODUCT_FLAVORS = dev
BUILD_PATH_JENKINS = /Users/zachary/Documents/jenkins/remote
BUILD_PATH_LOCAL = /Users/zachary/Documents/jenkins/local
BUILD_TIME= 2018-7-27
APPNAME = SevenStars

以上為默認配置,字段等下在jenkins配置要用到,BUILD_PATH_JENKINS和BUILD_PATH_LOCAL為打包本地緩存目錄

在app/build.gradle的android{}節點內修改下打包的apk名稱

android.applicationVariants.all {
        variant ->
            variant.outputs.all {
                //新名字
                def newName
                //輸出文件夾
                def outDirectory
                //是否為Jenkins打包,輸出路徑不同
                if ("true".equals(IS_JENKINS)) {
                    timeNow = BUILD_TIME
                    outDirectory = BUILD_PATH_JENKINS
                    //BUILD_PATH為服務器輸出路徑
                    variant.getPackageApplication().outputDirectory = new File(outDirectory)
                    newName=APPNAME+"-v"+APP_VERSION+'-'+variant.productFlavors[0].name+'-'+variant.buildType.name+'.apk'
                } else {
                    outDirectory = BUILD_PATH_LOCAL
                    //本機打包輸出在本機路徑
                    variant.getPackageApplication().outputDirectory = new File(outDirectory)
                    newName=APPNAME+"-v"+APP_VERSION+'-'+variant.productFlavors[0].name+'-'+variant.buildType.name+'.apk'                }
                //在這里修改apk文件名
                outputFileName = newName
            }
    }

 

回到jenkins,點擊 配置--General,勾選參數化構建過程,選擇 添加參數--選項參數

 
 
 

輸入名稱,與gradle.properties配置的字段一致,設置選項,輸入app版本,描述隨便填

 


繼續點擊 添加參數--字符參數

 
 
 

繼續點擊添加參數,添加兩個選項參數,如下配置

 
 
 

這樣配置的目的是為了讓打包有更多可選項,設置完立即構建就變成了Build with Parameters

 
 
 

點擊Build with Parameters可以看到多了構建選項

 


現在還不能構建,因為還沒配置構建,回到 配置--構建 ,勾選Invoke Gradle

 
 
Gradle Version選擇配置好的GRADLE_HOME,Tasks輸入

clean assemble${PRODUCT_FLAVORS}${BUILD_TYPE}類似於Android Studio里的命令

 
 
 

點擊 增加構建步驟--執行shell(上傳apk到蒲公英生成二維碼)

 
 
 

輸入命令

curl -F "file=@/Users/zachary/Documents/jenkins/remote/SevenStars-v${APP_VERSION}-${PRODUCT_FLAVORS}-${BUILD_TYPE}.apk" -F "uKey=bfeb1a2e4febecd1b83878dd52c4fbfa" -F "_api_key=4481e4790641520d52c088291b4d8e79
" https://www.pgyer.com/apiv1/app/upload > /tmp/upload_app.txt
url=$(cat /tmp/upload_app.txt|awk -F':' '{print $(NF)}'|sed 's#\\##g')
echo "download_URL:<img src=$url>"
 
file的地址與gradle.properties配置的字段一致,自己體會啊哈哈......我怕被打,還是說一下,SevenStars-v${APP_VERSION}-${PRODUCT_FLAVORS}-${BUILD_TYPE}.apk就是匹配如下路徑的apk,然后上傳蒲公英

 
 

uKey和_api_key登陸蒲公英可拿到(注冊一個蒲公英賬號就有啦)

 


點擊保存,回到項目任務,如下點擊,開始構建

 
 
 

可以打開下拉列表選擇 控制台輸出 查看日志

 


看到構建成功

 


此時還沒有二維碼,登陸蒲公英,如下操作復制二維碼地址

 
 
 

回到 配置--構建,點擊 增加構建步驟

 


在Description中設置二維碼地址,語法為HTML
<img src="蒲公英二維碼地址">

 


點擊保存,然后再次構建項目,就可以看到二維碼啦

 
 

接着我們來配置郵件模板,點開 配置--構建后步驟,選擇 增加構建后步驟--Editable Email Notification

 


在Default Content中黏貼如下html模板

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構建日志</title>
</head>

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
    offset="0">
    <table width="95%" cellpadding="0" cellspacing="0"
        style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
        <tr>
            <td>(本郵件是程序自動下發的,請勿回復!)</td>
        </tr>
        <tr>
            <td><h2>
                    <font color="#0000FF">構建結果 - ${BUILD_STATUS}</font>
                </h2></td>
        </tr>
        <tr>
            <td><b><font color="#0B610B">下載二維碼</font></b></td>
        </tr>
        <tr>
            <td><img src="https://www.pgyer.com/app/qrcode/m9dz">
</td>
        </tr>
        <tr>
            <td><br />
            <b><font color="#0B610B">構建信息</font></b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td>
                <ul>
                    <li>項目名稱&nbsp;&nbsp;${PROJECT_NAME}</li>
                    <li>構建編號&nbsp;&nbsp;第${BUILD_NUMBER}次構建</li>
                    <li>SVN&nbsp;版本:&nbsp;${SVN_REVISION}</li>
                    <li>觸發原因:&nbsp;${CAUSE}</li>
                    <li>構建日志:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                    <li>構建&nbsp;&nbsp;Url&nbsp;&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li>
                    <li>工作目錄&nbsp;&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
                    <li>項目&nbsp;&nbsp;Url&nbsp;&nbsp;<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
                </ul>
            </td>
        </tr>
        <tr>
            <td><b><font color="#0B610B">Changes Since Last
                        Successful Build:</font></b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td>
                <ul>
                    <li>歷史變更記錄 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
                </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="&nbsp;&nbsp;&nbsp;&nbsp;%p"}
            </td>
        </tr>
        <tr>
            <td><b>Failed Test Results</b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <tr>
            <td><pre
                    style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
                <br /></td>
        </tr>
        <tr>
            <td><b><font color="#0B610B">構建日志 (最后 100行):</font></b>
            <hr size="2" width="100%" align="center" /></td>
        </tr>
        <!-- <tr>
            <td>Test Logs (if test has ran): <a
                href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a>
                <br />
            <br />
            </td>
        </tr> -->
        <tr>
            <td><textarea cols="80" rows="30" readonly="readonly"
                    style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>
            </td>
        </tr>
    </table>
</body>
</html>

 

以下地方改成你的蒲公英二維碼地址

 

 

拉到下面,Attach Build Log設置編譯日志要不要發送到郵件,看具體需求,點開右邊 高級設置

 
 
點高級
 
 

輸入要發送的郵箱地址,多個用“,”隔開,一定要配置,不配置打死收不到郵件

 
 

點擊保存,再次點擊構建項目,不出意外的話,就可以收到郵件通知啦!

 
 
打開手機瀏覽器,輸入 http://IP:端口號(電腦和手機連接的網絡必須在同一個局域網)登陸jenkins控制台,點擊構建,就可以打包apk啦!

如果同一個局域網還不能訪問,鏈接launchd配置文件,終端輸入

$ ln -sfv /usr/local/opt/jenkins/*.plist ~/Library/LaunchAgents

進入 /usr/local/opt/jenkins(Finder前往)用編輯器打開homebrew.mxcl.jenkins.plist

 
 
修改--httpListenAddress=0.0.0.0,把jenkins的監聽地址改成廣播的形式
 
 

修改完成,執行命令行:

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.jenkins.plist

 

這樣局域網的其他電腦就能訪問你的ip啦如果要外網也能訪問,可以把jenkins部署到Tomcat或者服務器(自己研究啊哈哈~)

 
 
 
可通過以下途徑關注本人:

個人網站https://zachary46.xyz

Githubhttps://github.com/Zachary46

博客園https://www.cnblogs.com/Zachary46

CSDN博客https://blog.csdn.net/Zachary_46

簡書https://www.jianshu.com/u/c6a23c2b7697

掘金https://juejin.im/user/5b57e9a16fb9a04f8e1432ef


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM