由于企业的需求,需要做一个网站开分享每个版本的Android的app,所以需要使用的工具如下:
Jenkins平台,远程编译环境服务器一台,web服务器一台,根据自己的选择,可以搭配自己的资源,废话少说,直奔主题
1. Jenkins的操作
在Jenkins中添加一个节点,设置好远程的工作目录,创建好服务器的标签,然后创建好相关的环境键值对,比如Android_home,Java_home,Gradle_home等,这些都是比较平常的操作,这里就不罗嗦了,值得注意的有两点:第一,java的路径问题,由于Jenkins的主机配置从节点,需要找特点的Java路径,有时,类似/usr/java/jdk这样自动编译好的路径,及时配置在系统路径下,也不一定能识别,这个需要注意一下,处理方法很简单,软连接就OK了;第二,就是git的问题,如果软件的管理是使用git的方法,注意你远程节点git的版本,如果比较老旧,那就要下载编译比较新的版本,依然注意系统的路径,git-core是重点,如果找不到它,你想用git-remote-https的方式去pull远程的git仓库,那注定是失败,哈哈,网上找找相关文章,好好查阅一下吧
2. 远程编译服务器上的操作
下面说重点的东西,就是远程编译服务器上的相关设置,也是本博客的重点
使用的环境如下:
系统:Centos6.5
工具: zlib.i686、glibc.i686、jdk-7u79-linux-x64+(根据自己项目调整版本)、android-sdk_r23.3.4-linux 、Gradle2.4+ (Android-studio)
由于比较仓促,我使用root操作的,当然创建一个普通用户比较好,就是特别注意目录的操作权限问题。
由于我已经在一个可以翻墙的服务器上更新了sdk,这个时间你可以出去旅个游,然后回来也差不多了(下载更新地址 http://mirrors.opencas.cn/android/repository/)
1.Java环境的下载
2.Android环境的下载
3.Android-studio的下载(项目的引导编译工具gradle在里面)
把上述的这些写入系统变量,简单一下,如果是普通用户,则在家目录的环境配置文件中写入,我的配置如下:
JAVA_HOME=/usr/java/jdk1.7
JRE_HOME=$JAVA_HOME/jre
ANDROID_HOME=/usr/local/Android/Sdk
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:/usr/local/android-studio/gradle/gradle-2.4/bin:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH ANDROID_HOME
由于android编译需要32位C编译包,所以 zlib.i686、glibc.i686在centos上是必备软件
yum install zlib.i686 glibc.i686 -y,请下载安装
更新的过程比较繁杂,请耐心等待吧
然后是Jenkins里面的项目配置了,创建一个新的项目,使用标签,即刚才创建的从节点,一切已经配置完成
选择git的项目地址,添加用户名密码认证,选择分支
我这里构建的是shell的poll scm(轮询),每个小时一次
构建也是使用shell操作,我的配置如下:
cd /home/data/Android/workspace/iWu-Android_check_ticket
rm -rf app/build/output
export JAVA_HOME=/usr/java/jdk1.7/
export ANDROID_HOME=/usr/local/Android/Sdk
/usr/local/android-studio/gradle/gradle-2.4/bin/gradle -PbuildNum=B${BUILD_NUMBER} assembleRelease
增加构建后操作
选定你的web服务器,然后要传输的文件
app/build/outputs/*.html,app/build/outputs/lint-results_files/*,app/build/outputs/apk/*.apk
放在指定的目录,注意远程文件放置的配置,我这里是
iwu_android_check_ticket/build_${BUILD_NUMBER}(Jenkins里面有很多的变量很好用,自行研究)
执行的操作如下:
cd /data/repository/iwu_android_check_ticket/build_${BUILD_NUMBER}
mv app/build/outputs/* .
rm -rf app
这样每次编译好放置的文件目录不会存放任何文件,避免目录容量逐渐变大
3. web服务器的操作
到这里就比较好办了,随便来一台web服务器,配置一下项目放置的路径,注意web里面的一些权限
以上就是jenkins 远程构建Android的过程的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!
我正在尝试使用令牌调用远程构建。它给了我401。根据我的理解,token不需要。 我在这里缺少什么?
问题内容: 我已经安装了Jenkins,并配置了在构建过程中运行模拟器的构建作业。但是,当我执行作业时,出现错误消息,表明jenkins用户没有运行kvm的权限。我该如何解决。 权限 问题答案: 我设法解决了这个问题。 安装Qemu-KVM和cpu-checker: 检查KVM是否可用(以用户身份): 创建组kvm并添加到该组: 更改以下组的所有权: 创建udev规则: 重启
问题内容: 这是一个真正的菜鸟问题。我在一家公司中工作,该公司生产100多种使用许多相同组件的应用程序。在构建时有一些小的自定义,我们希望加快速度以提高效率。大多数自定义操作是在运行时从服务器下载数据时完成的。 我们可以最快地完成一个.apk项目的过程大约是15分钟。此过程涉及更改程序包名称,图标和几个字符串资源。但是,当您每天要处理15-20个应用程序时,这可能会成为实时杀手,我宁愿花时间编写新
警告 build 命令已被弃用。 请使用第三方构建工具(如webpack或grunt),或参考示例 Truffle Boxes 。 In order to provide tight integration with Truffle for those that desire it, Truffle allows you to specify a custom build pipeline mea
本文向大家介绍深入分析Android构建过程,包括了深入分析Android构建过程的使用技巧和注意事项,需要的朋友参考一下 资源合并 如果项目引入了android support包,又或许依赖于其它第三方aar库,那构建前会将aar解压并与本地资源合并,这里的资源主要包括assets目录,res目录及Androidmanifest.xml。 当第三方依赖中的assets或res文件与本地文件有冲突
问题内容: 我有一个脚本,可以使用令牌远程触发Jenkins上的作业。这是我的脚本: 运行它之后,我得到以下响应: 我注意到它返回标题中的队列URL:http : //jenkins.myserver.com/jenkins/queue/item/91。但我不知道该如何使用此返回URL。 1)我想知道是否有人知道如何检查我刚刚创建的工作的状态? 2)由于上述回应并未传回工作编号,因此我无法真正使用