本方案以 RHEL / Centos 64位Linux操作系统为例,由于这是眼下最常见的server环境。

一、安装Java SDK。

建议,不要使用诸如yum之类的玩意自己主动安装,由于openJDK之类的东东终于各种幺蛾子跑不起来。老老实的去oracle站点下载至少Java7 64位的终于版本号。手动安装之,配置好系统path和JAVA_HOME环境变量。

vim ~/.bash_profile
export JAVA_HOME=<Java安装路径>
PATH=$PATH:$JAVA_HOME/bin
……

二、安装Android SDK管理工具。

思路就是去Google站点上把Linux版本号的Android SDK管理工具压缩包搞下来,假设訪问不了Google(中国特色你懂的)就上网找IP地址配host之类的方法搞定。

wget https://dl.google.com/android/android-sdk_r23.0.2-linux.tgz

然后就是解压缩配置环境变量啦,终于确保”android”命令在系统中可用就是目的。

编辑 ~/.bash_profile 加入系统路径2枚:

PATH=$PATH:$your_android-sdk-linux/tools
PATH=$PATH:$your_android-sdk-linux/platform-tools
export PATH

64位系统请设置这个环境变量:

export ANDROID_SWT=$your_android-sdk-linux/tools/lib/x86_64
# 假设是32位系统则这样设置:
# export ANDROID_SWT=$your_android-sdk-linux/tools/lib/x86

完事后检測一下是否OK。执行命令:

android -h

三、安装Ant为了执行自己主动编译脚本。

建议老老实实去下载 Apache Ant,注意:android-sdk_r23.0.2 必须要 Ant 1.8 版本号以上才行,解压之,并将其bin文件夹配置到系统执行路径中。过程不再废话~

期间可能会遇到问题:



java.lang.ClassNotFoundException: org.apache.tools.ant.util.regexp.Jdk14RegexpRegexp



这样解决:

sudo yum install ant-apache-regexp

或(Ubuntu系统)

sudo apt-get install ant-optional

四、下载Android SDK。

思路是先查看有哪些版本号的SDK,它们的编号怎样,然后选择自己须要的下载之。假设全下载的话就太多了,在中国。慢。搞定这些事你会用到例如以下命令:

# 查看远程全部的SDK
android list sdk --all # 查看本地已安装的SDK
android list target # 只下载编号为27的SDK,--no-ui 不须要启动图形界面
android update sdk --no-ui --all --filter 27 # 下载 platform-tools和android-19
android update sdk --no-ui -u --all --filter platform-tools,android-19 # 下载全部的SDK(不建议这样做)
android update sdk --no-ui

五、開始尝试构建工程

Android工程一般没有Ant构建文件build.xml。因此须要在项目根文件夹执行例如以下命令測试一下是否能生成:

android update project -p .

可能你会遇到例如以下问题:

Execute failed: java.io.IOException: Cannot run program "/android/sdk/build-tools/android-4.1/aapt": error=2

解决的方法:

yum install -y compat-libstdc++-296.i686
yum install -y compat-libstdc++-33.i686

/android/sdk/build-tools/android-4.1/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

解决的方法:

yum install -y zlib

/android/sdk/build-tools/android-4.1/aapt: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

解决的方法:

yum install -y libstdc++.so.6

error while loading shared libraries: libz.so.1: cannot open shared obj

解决的方法:

yum install -y zlib.i686

六、设置Jenkins和设置相关环境。

分析代码质量你须要Findbugs。

所以建议你下载 Findbugs 2.0.3,然后解压缩到某个文件夹就算安装了。再复制 findbugs-ant.jar 到 ANT_HOME/lib 文件夹。

在“android-sdk/tools/ant”这个文件夹里创建 findbugs-exclude.xml 这个文件,不过findbugs不要扫描非Java代码,内容例如以下:

<?xml version="1.0" encoding="UTF-8"?>
<FindBugsFilter>
<Match>
<Class name="~.*\.R\$.*"/>
<Bug code="Nm"/>
</Match>
<Match>
<Class name="~.*\.Manifest\$.*"/>
<Bug code="Nm"/>
</Match>
</FindBugsFilter>

然后编辑“android-sdk/tools/ant/build.xml”,添加 findbugs 的构建任务:

<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"/>
<target name="findbugs">
<mkdir dir="reports" />
<findbugs home="<你的findbugs安装文件夹>" output="xml" outputFile="reports/findbugs.xml" excludeFilter="findbugs-exclude.xml">
<auxClasspath path="${project.target.android.jar}"/>
<auxClasspath>
<fileset dir="libs" includes="*.jar" />
</auxClasspath>
<class location="${out.dir}" />
<sourcePath path="${source.dir}" />
</findbugs>
</target>

官方的标准做法是这样建议的。我认为太麻烦。供參考吧:

<property name="findbugs.home" value="${env.FINDBUGS_HOME}" />
<path id="findbugs_lib">
<fileset dir="${findbugs.home}/lib/">
<include name="*.jar"/>
</fileset>
</path>
<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" classpathref="findbugs_lib" />
<target name="findbugs" depends="-compile">
<mkdir dir="reports" />
<findbugs home="${findbugs.home}" output="html" outputFile="reports/${ant.project.name}_findbugs.html">
<auxClasspath path="${android.jar}" />
<auxClasspath>
<fileset dir="${other-dependency-lib-dir}/libs" includes="*.jar" />
</auxClasspath>
<class location="${out.dir}" />
<sourcePath path="${source.dir}" />
</findbugs>
</target>

最后,開始愉快的操作Jenkins:

首先在Jenkins系统环境变量控制台里配置 findbugs.home 和 android-sdk.home ,你懂得。

然后“构建一个自由风格的软件项目”在Jenkins里。

在项目里按例如以下顺序加入“构建步骤”:

Execute shell

Command

android update project -p . --target android-19

Invoke Ant

Targets

clean
debug
findbugs
lint

看到了吧,findbugs命令就是我们刚才配置的Ant构建任务。

lint命令须要Jenkins安装响应的插件,这里不再赘述。


參考资料:

http://www.cnblogs.com/ifantastic/p/3981295.html

https://www.digitalocean.com/community/tutorials/how-to-build-android-apps-with-jenkins

http://stackoverflow.com/questions/17963508/how-to-install-android-sdk-build-tools-on-the-command-line

http://wolfgangkiefer.blog.163.com/blog/static/86265503201310206246960

全陷阱破解:在Linux环境下的Jenkins中持续集成Androidproject的更多相关文章

  1. windows下使用Jenkins+Gitea持续集成

    关于Jenkins持续集成: 一.Gitea 1)https://git-scm.com/download/win下载Git并安装 https://gitea.io/zh-cn/ 下载Gitea私人仓 ...

  2. linux环境下搭建jenkins实现自动部署

    写在前面:公司项目初期,环境一切从始.因此,项目的发布环境需要自己搭建.就动手搭建了jenkins,在此把个人的搭建过程以及搭建中碰到的问题一起总结一下. 1. 准备环境. 首先,需要jdk是必须要安 ...

  3. linux环境下完成jenkins的环境搭建

    环境搭建部署: 请完成jenkins的环境搭建,需安装tomcat,mysql. Jenkins 地址:  https://jenkins.io/download/ 步骤分析: 1.全部操作使用普通用 ...

  4. linux环境下搭建Jenkins持续集成(Jenkins+git+shell+maven+tomact)

    准备环境 jenkins.war包 ,jdk1.8  ,tomact , maven,git 1.Jenkins  war包,下载地址https://jenkins.io/zh/download/  ...

  5. linux环境下,清空history中记录的历史命令

    需求描述: 今天在数据库主机上操作,通过history看到有刚操作过的历史记录,想把这个清除了, 但是,还不影响后续的命令记录,所以查了下,在此记录. 操作过程: 1.通过history -c命令,完 ...

  6. Linux环境下安装jenkins

    废话不多说,直接开始 1.从官网下载Jenkins的war包 2.下载好的War放到Tomcat的网站根目录webapps下,然后启动Tomcat. 3.打开浏览器,输入http://IP:8080/ ...

  7. linux 环境下bash脚本中找不到命令

    mr.sh: line 1: HADOOP_CMD: command not found mr.sh: line 4: INPUT_FILE_PATH: command not found mr.sh ...

  8. linux环境下redis安装(redis伪集群搭建)

    redis在linux环境下搭建 1.创建目录 [root@192 local]# mkdir /usr/local/redis 2.下载redis,并解压 [root@192 local]# wge ...

  9. mosquitto在Linux环境下的部署/安装/使用/测试

    mosquitto在Linux环境下的部署 看了有三四天的的源码,(当然没怎么好好看了),突然发现对mosquitto的源码有了一点点感觉,于是在第五天决定在Linux环境下部署mosquitto. ...

随机推荐

  1. BZOJ 1618: [Usaco2008 Nov]Buying Hay 购买干草( dp )

    无限背包dp.. 因为题目中说至少到 H 磅 , 我就直接把 H * 2 了.. ----------------------------------------------------------- ...

  2. [Git]自译《Git版本控制管理》——1.介绍(二)_Git诞生

    译者前言:      本系列译文为作者利用业余时间翻译,有些疏漏与翻译不到位的地方敬请谅解.      不过也很希望各位读者能给出中肯的建议.      方括号的注释,如[1][2]为译者注.     ...

  3. js中的typeof

    typeof的几种返回结果的分类: 转自:http://www.360doc.com/content/14/0718/15/8790037_395279403.shtml typeof运算符介 绍:t ...

  4. C#后台跳转

    后台跳转的方法: 1.js脚本 [不推荐使用] Context.Response.Write("<script language=javascript>window.locati ...

  5. (Problem 22)Names scores

    Using names.txt (right click and 'Save Link/Target As...'), a 46K text file containing over five-tho ...

  6. 基于Qt下移动平台第三方接入-ShareSDK(新浪微博,微信朋友圈等分享登录)

    一. ShareSDK简介 ShareSDK是为iOS.Android.WP8的APP提供社会化功能的一个组件,开发者只需10分钟即 可集成到自己的APP中,它不仅支持如QQ.微信.新浪微博.腾讯微博 ...

  7. 定制一个winCE5.0操作系统

    定制一个winCE5.0操作系统 2009-04-01 09:01:14|  分类: winCE|字号 订阅     定制一个操作系统并模拟器上运行,需要以下几个步骤: STEP 1:用Platfor ...

  8. c++ 实现将数字转换为中文数字输出

    实现如下函数: void printInChinese(int num); 这个函数输入一个小于100000000(一亿)的正整数,并在屏幕上打印这个数字的中文写法. 例如: 17 -> 一十七 ...

  9. IT第二十一天 - Collections、ArrayList集合、LinkedList集合、Set集合、HashMap集合、集合的操作注意【修20130828】

    NIIT第二十一天 上午 集合 1. 集合Collection存储数据的形式是单个存储的,而Map存储是按照键值对来存储的,键值对:即键+值同时存储的,类似align="center&quo ...

  10. Android开发 第一篇

    关于android开发,new项目通知: 之前的new -> android project,现在更改为new -> android application project,同学们可以继续 ...