Android in Hudson (2) 了解Android預設的build.xml內容

Android in Hudson (2) 了解Android預設的build.xml內容

當我們把上一篇所產生的build.xml打開來看時,把註解都刪掉的話,你會發現內容相當精簡如下:

 


	<?xml version="1.0" encoding="UTF-8"?>
<project name="YourProjectName" default="help">
  <property file="local.properties" />
  <property file="build.properties" />
  <property file="default.properties" />
  
  <path id="android.antlibs">
        <pathelement path="${sdk.dir}/tools/lib/anttasks.jar" />
        <pathelement path="${sdk.dir}/tools/lib/sdklib.jar" />
        <pathelement path="${sdk.dir}/tools/lib/androidprefs.jar" />
        <pathelement path="${sdk.dir}/tools/lib/apkbuilder.jar" />
        <pathelement path="${sdk.dir}/tools/lib/jarutils.jar" />
   </path>

   <taskdef name="setup"
        classname="com.android.ant.SetupTask"
        classpathref="android.antlibs" />
 
  <setup />
</project>

 

不過....把註解刪掉略過不看絕對是錯誤的行為,這裡我只是不想占版面罷了,當然還是要解釋一下,

  1. *.properties檔都是key/Value的形式,簡單來說就是定義變數的檔案
  2. ${sdk.dir}是Ant中存取property的方式(其實就是*.properties裡的那些變數),當然你也可以直接用
    
    			<property name="sdk.dir" value="path to your android sdk" />
    有相同效果,我自己是直接就寫在build.xml裡,省的要多維護一個檔案
  3. path/pathelement/taskdef都是Ant定義的tag,就不多說明,我自己是把那一段想成定義了一個task為setup,執行的物件是com.android.ant.SetUpTask,參考的位置是android.antlibs所指定包含的檔
  4. 最後就是執行setup這個task,如果剛剛在刪掉註解前,你有稍微看一下的話就會發現到,執行setup時,除了會將一些properties設定好之外,還會import其預設的rule file (其實就是ant build file),藉此即可使用一些rule內預先定義好的target(如:debug, release等),但假設你比較搞怪,不愛垂手可得的東西,熱愛打造專屬自己的target話,別以為就可以不執行setup,畢竟設定那些 properties是很重要的,請使用<setup import="false" />

如果你不是個愛搞怪的人,其是要透過ant去build Android程式,你只需要把sdk.dir這個變數設定好,接著就下ant debug就會自動編譯成debug版本,老實說是很簡單,但是我們放到hudson上絕對不會只是想compile而已,那就太無聊啦,因此對預設 build.xml做一些加工是在所難免。

然而,修改預設build.xml之前,我認為還是要了解那些import進來的檔案是什麼,我強烈建議大家還是可以去看一下那些rule file,他們通常會在 ${sdk.dir}/tools/ant/ 而且很機車的是還有版本,你可能會看到ant_rules_r1.xml/ant_rules_r2.xml/ant_rules_r3.xml,基本上他都是會用最新的,也有ant_test_rule系列,當你build test project時就會用到的,如果你已經對Ant有些許的認識,那麼rule file內容絕對不會難倒你,如果你跟Android很熟的話,就更會發現他做的動作其實都是你可能已經很熟悉的command,請大膽的去了解它們