全陷阱破解:在Linux環境下的Jenkins中持續整合Androidproject

來源:互聯網
上載者:User

標籤:

本方案以 RHEL / Centos 64位Linux作業系統為例,由於這是眼下最常見的server環境。

一、安裝Java SDK。


建議,不要使用諸如yum之類的玩意自己主動安裝,由於openJDK之類的東東終於各種么蛾子跑不起來。老老實的去oracle網站下載至少Java7 64位的終於版本號碼。手動安裝之,配置好系統path和JAVA_HOME環境變數。

vim ~/.bash_profileexport 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/toolsPATH=$PATH:$your_android-sdk-linux/platform-toolsexport 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,它們的編號怎樣,然後選擇自己須要的下載之。假設全下載的話就太多了,在中國。慢。搞定這些事你會用到例如以下命令:

# 查看遠程全部的SDKandroid list sdk --all# 查看本地已安裝的SDKandroid list target# 只下載編號為27的SDK,--no-ui 不須要啟動圖形介面android update sdk --no-ui --all --filter 27# 下載 platform-tools和android-19android 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

cleandebugfindbugslint

看到了吧,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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.