jenkins 远程构建Android的过程详解

由于企业的需求,需要做一个网站开分享每个版本的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的过程的资料整理,后续继续补充相关资料,谢谢大家对本站的支持!

时间: 2024-10-26 07:18:13

jenkins 远程构建Android的过程详解的相关文章

jenkins 远程构建Android的过程详解_Android

由于企业的需求,需要做一个网站开分享每个版本的Android的app,所以需要使用的工具如下: Jenkins平台,远程编译环境服务器一台,web服务器一台,根据自己的选择,可以搭配自己的资源,废话少说,直奔主题 1. Jenkins的操作 在Jenkins中添加一个节点,设置好远程的工作目录,创建好服务器的标签,然后创建好相关的环境键值对,比如Android_home,Java_home,Gradle_home等,这些都是比较平常的操作,这里就不罗嗦了,值得注意的有两点:第一,java的路径问

Android 定时任务过程详解_Android

在Android开发中,通过以下三种方法定时执行任务: 一.采用Handler与线程的sleep(long)方法(不建议使用,java的实现方式) 二.采用Handler的postDelayed(Runnable, long)方法(最简单的android实现) 三.采用Handler与timer及TimerTask结合的方法(比较多的任务时建议使用) android里有时需要定时循环执行某段代码,或者需要在某个时间点执行某段代码,这个需求大家第一时间会想到Timer对象,没错,不过我们还有更好的

Android 定时任务过程详解

在Android开发中,通过以下三种方法定时执行任务: 一.采用Handler与线程的sleep(long)方法(不建议使用,java的实现方式) 二.采用Handler的postDelayed(Runnable, long)方法(最简单的android实现) 三.采用Handler与timer及TimerTask结合的方法(比较多的任务时建议使用) android里有时需要定时循环执行某段代码,或者需要在某个时间点执行某段代码,这个需求大家第一时间会想到Timer对象,没错,不过我们还有更好的

Android的init过程详解(一)init的初始化

本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10 本文及后续几篇文章将对Android的初始化(init)过程进行详细地.剥丝抽茧式地分析,并且在其中穿插了大量的知识,希望对读者了解Android的启动过程又所帮助.本章主要介绍了与硬件相关初始化文件名的确定以及属性服务的原理和实现. Android本质上就是一个基于Linux内核的操作系统.与Ubuntu Linux.Fedora Linux类似.只是Android在应用层专门为移动设备添加了一些特有的支持.既然An

android上传图片到PHP的过程详解_php实例

今天在做上传头像的时候,总是提交连接超时错误,报错信息如下:XXXXXXSokcetTimeOutXXXXXXXX 然后自己设置HTTP的超时时间: 复制代码 代码如下: [java] view plaincopyprint? //设置超时时间  httpclient.setTimeout(20000);  再building,runing,还是不行....这就怪了,明明好好的,怎么会突然就变成连接超时了呢!又折腾了一阵子后,也跟后台那边的朋友沟通过,他也测试了上传接口,发现没什么问题,就让我自

基于Android实现百度地图定位过程详解_Android

一.问题描述 LBS位置服务是android应用中重要的功能,应用越来越广泛,下面我们逐步学习和实现lbs相关的应用如定位.地图.导航等,首先我们看如何基于百度地图实现定位功能 二.配置环境 1.注册密钥:地址http://developer.baidu.com/map/ 2.下载定位SDK,并导入SDK如图所示:   三.编写MyApplication类 编写MyApplication类,为了使用方便我们可以将实现定位的方法封装的Application组件中 封装下列方法 1.  获取定位信息

Android4.X中SIM卡信息初始化过程详解_Android

本文实例讲述了Android4.X中SIM卡信息初始化过程详解.分享给大家供大家参考,具体如下: Phone 对象初始化的过程中,会加载SIM卡的部分数据信息,这些信息会保存在IccRecords 和 AdnRecordCache 中.SIM卡的数据信息的初始化过程主要分为如下几个步骤 1.RIL 和 UiccController 建立监听关系 ,SIM卡状态发生变化时,UiccController 第一个去处理. Phone 应用初始化 Phone 对象时会建立一个 RIL 和UiccCont

《Java和Android开发实战详解》——2.1节如何构建应用程序

2.1 如何构建应用程序 Java和Android开发实战详解 一般来说,我们使用Java程序语言的目的,就是编写程序代码构建应用程序,以期让计算机执行来解决问题. 2.1.1 如何编写程序代码 程序设计(Programming)很困难吗?事实上,如果你可以引导问路人到达目的地.走迷宫或开车到你家,一步一步详细列出活动流程,就表示你一定可以编写程序代码.不过,在列流程时请注意!计算机一点都不聪明,也不会举一反三,所以,我们需要告诉计算机详细的步骤和信息,不能只有模棱两可的内容. 例如,在北京开车

Android的init过程详解(一)(转)

  本文使用的软件版本 Android:4.2.2 Linux内核:3.1.10      本文及后续几篇文章将对Android的初始化(init)过程进行详细地.剥丝抽茧式地分析,并且在其中穿插了大量的知识,希望对读者了解Android的启动过程又所帮助.本章主要介绍了与硬件相关初始化文件名的确定以及属性服务的原理和实现.      Android本质上就是一个基于Linux内核的操作系统.与Ubuntu Linux.Fedora Linux类似.只是Android在应用层专门为移动设备添加了