標籤:android svn ant
記錄一下這兩天研究的東西-----在windows一鍵完成拉取svn上的安卓原始碼並自動打包。
準備:ant打包工具,android sdk,以及ant拉取代碼所依賴的一個jar包svnant.jar,放到ant目錄下的lib目錄下即可。
ant是apache的一個一個編譯工具,我的版本是:apache-ant-1.9.4
sdk就不多介紹了。
我們安卓開發人員通常情況下可能是在eclipse中完成打包,打一個包,打完了後萬事大吉,但是又一些情境這種方式是不適合的,比如我要批量打包,或者有幾十個甚至幾百個項目要打包,這時顯然無法再用原始的方式做了。
閑言少敘。我們下載到ant解壓出來並把下面的bin目錄設定成系統內容變數,這樣我們在cmd視窗裡就能使用ant了:
ant預設會找目前的目錄下的build.xml檔案。如果要選擇指定檔案,可以使用ant -buildfile filename命令。
好。我們開始配置build.xml,build.xml主要做的事情就有兩件:
1、從svn拉取代碼;
2、編譯拉取到的代碼。
我們先看build.xml依賴的一個設定檔:build.properties
就是一些變數的配置。
應用資訊,svn地址、svn使用者名稱和密碼,apk產生路徑,最後我們在目前的目錄下的/product/apk目錄下取包即可,最後一行是sdk的路徑。
接下來看一下build.xml
<project name="test" basedir="." default="usage">default定義入口<property name="rootdir" value="."/><span style="white-space:pre"></span><pre name="code" class="html"><span style="color:#ff0000;">svn拉取代碼所需要的一些東西</span>
<property name="svnant.lib" value="E:\work\ant\apache-ant-1.9.4\lib" /> <property name="svnant.jar" value="${svnant.lib}/svnant.jar" /> <property name="svnClientAdapter.jar" value="${svnant.lib}/svnClientAdapter.jar" /> <property name="svnjavahl.jar" value="${svnant.lib}/svnjavahl.jar" /> <property file="build.properties" />上面貼的那個檔案 <loadproperties srcFile="project.properties" />安卓項目裡內建的一個設定檔,拉取代碼後自動拿到,也可以先放到目前的目錄下 <target name="usage">build啟動並執行入口 <echo message="start build"/> <antcall target="checkout" />拉取代碼下來 </target><path id="classpath"><fileset dir="${lib-dir}" includes="***.jar" /></path>
<span style="white-space:pre"></span>svn配置資訊<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" /><svnSetting id="svn.setting" svnkit="true" username="${svn.user}" password="${svn.password}" javahl="false" /><span style="white-space:pre"></span><target name="checkout"><svn refid="svn.setting"><export srcUrl="${urlRepos}" destPath="${rootdir}" force="true"/>配置svn地址使用者名稱和密碼</svn><antcall target="prepare"/>進入準備階段</target><fail message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var" unless="sdk.dir" /> <import file="${sdk.dir}/tools/ant/build.xml" /><target name="prepare">準備編譯,把bin目錄刪除,否則編譯可能通不過。<delete dir="${rootdir}/bin"/><antcall target="deploy" />開始編譯 </target> <target name="deploy"> <antcall target="release" />打release包,這個release target在安卓sdk目錄中的tools/ant/build.xml目錄下 <copy tofile="${gos.path}/MangoTravel_android.apk" >完了之後拷貝到目標目錄下 <fileset dir="${out.absolute.dir}/" includes="MangoTravel-release.apk" /> </copy><echo message="build finished"/>打包完成。 </target> </project>嗯,就是這麼簡單,可以配合一個bat檔案使用,bat裡就寫三個字元ant,以後雙擊就可以了,也可以在cmd中運行ant。
如果需要打多渠道包,則需要下載另外一個依賴jar包,ant-contrib-1.0b3.jar,放到ant的lib目錄下,然後再build.xml中用foreach標籤迴圈執行name為deploy的target即可,注意拷貝的時候把名字改成跟渠道相關的名字,否則自己都不知道那個包對應哪個渠道。
基本上就是這樣。有可能在編譯的時候會出一些意想不到的錯誤,但是基本上可以通過錯誤資訊搞定,問題不大。比如我開始的時候就是混編的時候出錯,後面發現是proguard版本太低,換一下後就搞定了。
一鍵完成android從svn拉取代碼編打包