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_TIMEoutDirectory = 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 LastSuccessful 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><prestyle="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): <ahref="${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

转载于:https://www.cnblogs.com/Zachary46/p/jenkins_android_apk.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451046.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中byte、short、char、boolean实际都是按照int处理的!

byte、char、short、boolean四种类型在汇编期或运行期间采取和int类型一样的存储方式&#xff0c;在计算时会先转换为int类型&#xff0c;后进行计算。所以两个short类型数据做算数运算&#xff0c;结果却为int类型。这主要是因为jvm的字节码为了简洁高效&#xff0c;设计时只使…

狗窝里的小日子- 2 ...

来&#xff0c;把平时作的菜菜整理下&#xff1a; 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.

优秀程序员必备素质——快速调试

你是否有过这些经历&#xff1a; 1.代码敲完了&#xff0c;刚想松口气&#xff0c;一运行程序&#xff0c;满满的Bug。 2.找啊找啊找&#xff0c;怎么找都找不到哪里出了问题。 3.调试了半天出不来&#xff0c;就开始便得心烦气躁。 4.一天连一个Bug也没调出来&#xff0c;…

Java程序编译运行过程

整体流程 1.首先由源程序文件编译成class文件。注意这里的源程序并不仅限于java程序&#xff0c;其他语言如果能够编译成class文件&#xff0c;并且符合jvm规范也能够在jvm上运行。 2.jvm将class文件拷贝到内存&#xff0c;解释成相应的机器语言运行。我们常用的hotspot虚拟机…

【TeeChart .NET教程】(七)使用函数

2019独角兽企业重金招聘Python工程师标准>>> 上一篇&#xff1a;【TeeChart .NET教程】&#xff08;六&#xff09;使用系列 【下载TeeChart.Net最新版本】 &#xff08;一&#xff09;功能类型 1.1 功能类型 TeeChart Pro功能是一个系列&#xff0c;几乎可以是任何…

Django的简介

一.MTV模型 Django的MTV模式: Model(模型):和数据库相关的.负责业务对象与数据库的对象(ORM) Template(,模板):放所有的HTML文件 模板语法:目的是将变量(数据库内容)如何巧妙的镶嵌到HTML页面中 View(视图):负责业务逻辑,并在适当的时候调用Model和Template 此外Django还有一个…

狗窝里的小日子- 3 ...

来&#xff0c;把平时作的菜菜整理下&#xff1a; 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.

5种流行的Linux发行版:你更喜欢哪一个呢?

现如今&#xff0c;对于各种类型的用户&#xff08;如桌面用户、服务器管理员、图形设计者等&#xff09;而言Linux已经成为一种最流行的操作系统。Linux是免费且开源的&#xff0c;任何人都可以建立和编译它的源代码&#xff0c;并将它分发给别人。这就是为什么Linux会有很多个…

基于ASP.net耳机网店商城系统(前台页面+后台页面)

源码https://github.com/doublekai/user web文件夹 转载于:https://www.cnblogs.com/doublekai/p/9778246.html

狗窝里的小日子- 4 ...

来&#xff0c;把平时作的菜菜整理下&#xff1a; 31. 32. 33. 34. 35. 36. 37. 38. 39. 40.

[Web 前端] 解决因inline-block元素导致的空白间距和元素下沉

cp from : https://www.jianshu.com/p/617e78a27c88 ** 前言&#xff1a; ** CSS 中的 display:inline-block 是笔者最为喜欢的元素之一&#xff0c;可以将原本占据一行的块级元素&#xff0c;转变为可以并列显示的行内块级元素。 display:inline-block 常被用来代替float进行页…

狗窝里的小日子- 5 ...

来&#xff0c;把平时作的菜菜整理下&#xff1a; 51. 52. 53. 54. 55. 56. 57. 58. 59. 60.

Linux(RadHat)基础学习—FTP服务

RedHat下的ftp服务 1.ftp服务的启动 1.编辑文件&#xff1a;vim /etc/sysconfig/selinux第6行selinuxdisabled保存退出。重启主机。 2.安装vsftpd yum install vsftpd -y 安装完成&#xff1a; 开启ftp服务&#xff1a; systmctl start vsftpd systemctl enable vsftpd 3.防火墙…

手机贴膜利润超百倍 消费者为无用功能高价买单

摘要&#xff1a;市场研究机构IDC的最新报告预计&#xff0c;2013年智能手机出货量将首次超过功能手机&#xff0c;国家工信部的数据显示&#xff0c;截至2011年底&#xff0c;我国智能手机用户已超过1.9亿。记者调查发现&#xff0c;在从事手机贴膜的摊点上&#xff0c;摊主多…

java内存区域及静态常量池、运行时常量池介绍

java内存区域介绍 我们先来介绍下虚拟机运行时数据区的结构&#xff1a; 我们项目中的每一个线程在运行时&#xff0c;都会有拥有自己独立的栈数据和程序计数器。程序计数器可以看作字节码命令的指示器&#xff0c;记录了下个需要执行的字节码指令&#xff0c;栈数据主要分为本…

狗窝里的小日子- 6 ...

来&#xff0c;把平时作的菜菜整理下&#xff1a; 61. 62. 63. 64. 65. 66. 67. 68. 69. 70.

数据库常见面试题总结

参考如下: 数据库常见面试题(开发者篇) 数据库优化 SQL数据库面试题及答案 常见面试题整理--数据库篇转载于:https://www.cnblogs.com/threetop/p/9425172.html

狗窝里的小日子- 7 ...

来&#xff0c;把平时作的菜菜整理下&#xff1a; 71. 72. 73. 74. 75. 76. 77. 78. 79. 80.

[转]CNN目标检测(一):Faster RCNN详解

https://blog.csdn.net/a8039974/article/details/77592389 Faster RCNN github : https://github.com/rbgirshick/py-faster-rcnn Faster RCNN paper : https://arxiv.org/abs/1506.01497 Bound box regression详解 : http://download.csdn.net/download/zy1034092330/9940097…

狗窝里的小日子- 8 ...

来&#xff0c;把平时作的菜菜整理下&#xff1a; 81. 82. 83. 84. 85. 86. 87. 88.