2008年10月6日 星期一

在 Eclipse 內,用 Ant 編譯你的 Android 程式

How to build the Android programs by using Ant.

從開始開發 Android 程式以來,一直都是用 Google 為 Eclipse 開發的 ADT plugin,在 Eclipse 這個開發環境中,撰寫、測試及編譯程式。

在 Eclipse 中,撰寫及測試程式,是件很愉悅的事,尤其是寫程式這事。這對之前習慣用 VI 寫 C/C++ 的我來說,Eclipse 所提供的功能,實在快把我寵壞了。除了 auto code completion 外,還隨時自動編譯,幫你找出所有可能的語法錯誤。最近,還發現他還有一些 code refactor 的功能。嗯,這個功能我喜歡(請原諒我如此訝異於這些功能的神奇,因為我才剛學 Java 而已)。

不過,編譯程式的部份,倒是一直困惑我許久。因為我在 Eclipse 中,一直找不到,要如何設定編譯 release mode (像是要去除 debug information,程式碼最佳化等等)程式的選項。自己研究了半天,發現好像要用 Ant (像是 UNIX 中的 make 或是 Windows 中的 nmake 這樣的批次編譯程式)才辦的到。

第一眼看到 Ant 的 build.xml 時,還真的被這處處充滿 xml tag 的文件給嚇到了,這到底是什麼東西啊。如果你和我有同樣的感覺,我建議你先到『天瓏』,買本『博碩文化』翻譯出版的『 Ant 實作手冊』,雖然是 2003 年的舊書,不過一本八百多頁的書,特價後才 199 元。對於要入 Ant 這個門的我來說,我覺得是物超所值。

看完我上面介紹的書後,你還要仔細閱讀,下面這個 SDK 文件中的 "Developing Android Applications with Other IDEs and Tools" 部分。

如何為你的 project 建立 build.xml

基本上,每個 project 的 build.xml 都是大同小異的。我建議你可以先用下列方法,建立一個樣板專案。我的目的,只是要其中的 build.xml。之後,我只要稍微修改一下這個樣板專案中的 build.xml,就可以將他用在其他的 project 上。

第一步,利用 activitycreator.bat 建立一個樣板專案。

在新建的 test_ant 目錄中,檢查一下,應該有個 build.xml。

接下來,先將這個 build.xml,複製到你的 project 目錄中,也就是和 AndroidManifest.xml,擺在同個目錄中。

這個 build.xml 的前幾行,長得應該像是下面這樣。

複製好後,我們要修改幾個地方才能給這個 project 使用。首先是,第二行中的 name="test_ant",你要將其中的 test_ant 換成你 project 的名稱。另外,第八行的 value="org.my.package",你要將其中的 org.my.package,換成這個程式的 package 路徑。

如果你的目的和我一樣,想利用 Ant 編譯出最佳化且沒有任何 debug information 的程式。那你還要將 build.xml 中的下面這段,

幫 javac 這個 task,加上 debug="false" 和 optimize="true" 這兩個選項。改完之後,就像下面這樣。

這樣就大功告成了。

等等,要在 Eclipse 中執行 Ant 前,請再確定你是否有設定 JAVA_HOME 這個環境變數,和將 %JAVA_HOME%\bin 加入到 PATH 環境變數中。你可以透過 Windows 上的 控制台→系統→進階→環境變數 來修改這些環境變數。

在我的機器上,這兩個環境變數的設定如下。

重新啟動 Eclipse 後,在左邊的 project list 內,就可以發現你複製進去的 build.xml,在上面按滑鼠右鍵,依照下圖執行 Ant Build... 這個功能,在接著出現的對話框內,你就可以選擇 "release" 這個選項,去編譯你的 release mode 程式。

在這裡,我只是簡單地介紹如何在 Eclipse 環境中,用 Ant 編譯你的程式。如果你真的想要寫個 Android 軟體,並拿來賣的的話。建議你,還是要在 Ant 上好好下功夫,讓你的開發環境更順暢。像我的 build.xml 就是由幾個 xml 兜起來的,總行數都快到千了。

1 則留言:

Michael 提到...

1.5版改成用android update project產生build.xml囉
它會import <$SDK>/platforms/android-1.5/templates/android_rules.xml
也可以把android_rules.xml的內容copy到build.xml裡面再修改

張貼留言