全陷阱破解:在Linux环境下的Jenkins中持续集成Androidproject

本方案以 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

时间: 2024-10-10 17:52:13

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

全陷阱破解:在Linux环境下的Jenkins中持续集成Android工程

本方案以 RHEL / Centos 64位Linux操作系统为例,因为这是目前最常见的服务器环境. 一.安装Java SDK. 建议,不要使用诸如yum之类的玩意自动安装,因为openJDK之类的东东最终各种幺蛾子跑不起来.老老实的去oracle网站下载至少Java7 64位的最终版本,手动安装之,配置好系统path和JAVA_HOME环境变量. vim ~/.bash_profile export JAVA_HOME=<Java安装路径> PATH=$PATH:$JAVA_HOME/bin

Linux环境下安装jenkins

1.下载rpm包到本地   http://pkg.jenkins-ci.org/ 2.在linux下使用rpm包安装命令: sudo rpm -ih jenkins-1.562-1.1.noarch.rpm 自动安装完成之后: /usr/lib/jenkins/jenkins.war    WAR包 /etc/sysconfig/jenkins       配置文件 /var/lib/jenkins/       默认的JENKINS_HOME目录 /var/log/jenkins/jenkin

centos7下Gitlab+Jenkins部署持续集成CI环境

1.基本环境 主机:win10,IP:192.168.0.111:部署机器centos7,IP:192.168.0.65:内存推荐到8G,实测6G以上,以免出现内存不够用而报错. 2.安装gitlab需要的组件 [[email protected] ~]# yum -y install curl policycoreutils-python openssh-server openssh-clients postfix wget vim lrzsz启动邮件功能 [[email protected]

windows下使用Jenkins+Gitea持续集成

关于Jenkins持续集成: 一.Gitea 1)路径:https://gitea.io/zh-cn/ 下载Gitea私人仓库 2)Gitea放在想要安装的路径下,如图: 3)双击Gitea生成custom文件夹 //方便后面创建服务时配置config文件 4)使用sc create gitea start= auto binPath= ""E:\Gitea\gitea-master-windows-4.0-386.exe" web --config "E:\Git

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

环境搭建部署: 请完成jenkins的环境搭建,需安装tomcat,mysql. Jenkins 地址:  https://jenkins.io/download/ 步骤分析: 1.全部操作使用普通用户hindy,当然也可直接使用root用户 2.需列出配置环境变量详细步骤,并保证环境变量每次优先解析JAVA_HOME 3.修改jenkins的访问端口设置为8090 4.Mysql的端口修改为8036 5.需考虑防火墙的端口问题 6.最终需给出访问jenkins和mysql的截图 具体操作如下:

Linux 环境下搭建 Jenkins(Hudson)平台

安装jenkins:安装 jenkins 有两种方式:安装方式一: [java] view plain copy sudo java -jar jenkins.war –httpPort=18080 –ajp13Port=18009 但是很多时候我们是使用SSH方式到目标机器上的,放我们关闭SSH连接时,这个命令也会被中断,jenkins服务会被终止,我们不可能一直保持这SSH连接,怎么办?可以把这行命令写成 shell 脚本,然后使用 nohup sh jenkins.sh &命令启动这个脚本

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

mr.sh: line 1: HADOOP_CMD: command not found mr.sh: line 4: INPUT_FILE_PATH: command not found mr.sh: line 6: OUTPUT_PATH: command not found mr.sh: line 8: fs: command not found Illegal option: / Usage: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file

linux环境下Python的自动补全

引 入 提高写程序的效率,补全功能是必不可少的.对于python,介绍vim编辑下和python交互模式这两种linux常用环境下的补全. 一.vim下的补全: pydiction插件 实现功能: 简单python关键词补全 python 函数补全带括号 python 模块补全 python 模块内函数,变量补全 安装步骤: cd ~ wget https://github.com/rkulla/pydiction/archive/master.zip unzip master.zip mkdi

Linux环境下线程消息同步的陷阱

我们程序中常常会使用到线程间的消息同步处理,比如以下一段伪码 var message = "": void func()  {   1. 启动线程Thread(该线程中填充message的内容):   2. 阻塞,直到等待到完成message填充的事件:   3. 处理message:   .... } void Thread()  {   1. 通过某种处理填充message:   2. 触发func中的阻塞事件: } 我们通常会使用条件变量来完成类似情况的线程同步处理 比如wind