天天看點

Android使用Ant技術打包詳解

ant使用

在ant的官網http://ant.apache.org進行下載下傳後apache-ant-1.8.2包

解壓(存放的路徑不要有中文字元)

把ant裡的lib設定到環境變量:e:\android\apache-ant-1.8.2\lib

這樣在指令行裡就可以直接使用ant

學習資料:

1. ant使用指南.rar

2. 文檔:apache-ant-1.8.2/docs/manual/index.html下的ant tasks à list of tasks

在ant的核心包裡沒有相關的for循環的task,要下載下傳相應的擴充包,已經有人寫過了。

擴充包:ant-contrib包就是一個裡面有for循環的擴充包。

下載下傳位址:http://ant-contrib.sourceforge.net/

使用這個擴充包中的for循環的介紹:http://enjoyyou.blog.hexun.com/41449457_d.html

把ant-contrib裡的lib包複制到apache-ant-1.8.2\lib下面,就可以了

混淆proguard是一個開源項目,ant自動打包的過程用的就是這個開源項目,在android-sdk-windows\tools目錄下有一個proguard檔案夾,裡面就有這相應的jar包

android sdk裡自帶的proguard jar包有一個bug,對于一些方法在混淆時會報異常,要解決這個bug,隻需要去proguard的官網http://proguard.sourceforge.net/下載下傳最新的jar包proguard4.6

下載下傳下來後,用proguard4.6\lib裡的jar包替換android-sdk-windows\tools\proguard\lib裡的jar,用proguard4.6\lib\bin裡的以.bat結尾的檔案替換android-sdk-windows\tools\proguard\bin裡的檔案

因為我們的項目是用svn來進行托管,是以需要用ant來下載下傳最新代碼,根據伺服器所用的svnservice的版本去svnant的官網http://subclipse.tigris.org/svnant.html 下載下傳svnant的版本,我用的是:svnant-1.1.0-rc2

然後隻要把svnant-1.1.0-rc2\lib裡的jar包複制到apache-ant-1.8.2\lib裡就可以了

在下載下傳下來的jar裡,有相應的doc文檔,可以知道怎麼使用

在項目裡要加入幾個檔案(build.properties, build.xml, local.properties, proguard.cfg), 怎樣得到這些檔案了,隻需要用指令建立一個android項目,就可以得到這些檔案(這些檔案對于不同的項目,基本上是一樣的):

Android使用Ant技術打包詳解

現在來說說這幾個檔案:

1). build.xml檔案:這個檔案是ant運作時腳本,這是一個固定的模闆,其中主要需要變動的是:<project name="myandroidapp" default="help">裡的name屬性,這個屬性的唯一作用是用于命名生成的apk檔案(如myandroidapp-release.apk);但注意,這個檔案不要在eclipse裡打開,如果打開了會報錯,解決辦法隻有把這個檔案先删除再複制進去。

2). build.properties檔案:這是一個屬性檔案,可以更改編譯時的一些屬性,我主要用到的是下面幾個屬性

Android使用Ant技術打包詳解

jar.libs.dir表示如果你引用的第三方jar包的路徑,其default=libs

java.encoding表示檔案的編碼,其default=gbk

key.store表示key的路徑,如:xx/xxxx.keystore

key.alias表示key的别名,這個别名不要帶路徑

key.store.password, key.alias.password就不用說了。

3). local.properties檔案:這個也是一個屬性檔案,其中用于記錄sdk.dir的路徑

Android使用Ant技術打包詳解

4). proguard.cfg檔案:這個是混淆配置檔案,其中的大部分是都是一樣的,隻要根據模闆走就行了,其中主要是注意兩點:

*. -keep class * extends android.view.view 這個表示自定義的view對象不做混淆,其預設情況下是沒有的,但這個必須要寫,因為我們會在xml檔案裡使用其全路徑

*. -dontwarn com.mapbar.android.**這名話很重要,如果我們使用了第三方的jar包,編譯時也會對第三方的jar進行混淆,如果第三方法的jar包裡有類所關聯的類沒有加入到這個jar包中,則在編譯時,會warn,而且這個warn會讓編譯過程終止。而這句話的意思是,不要抛出字首為com.mapbar.android的warn,這樣就不會終止編譯過程了。

寫ant腳本和配置檔案(build.xml, build.properties)

a). build.properties是一個屬性檔案,是一些打包的配置檔案

Android使用Ant技術打包詳解
Android使用Ant技術打包詳解
Android使用Ant技術打包詳解

b). build.xml檔案的寫法:

Android使用Ant技術打包詳解
Android使用Ant技術打包詳解
Android使用Ant技術打包詳解
Android使用Ant技術打包詳解
Android使用Ant技術打包詳解
Android使用Ant技術打包詳解
Android使用Ant技術打包詳解
Android使用Ant技術打包詳解
Android使用Ant技術打包詳解
Android使用Ant技術打包詳解
Android使用Ant技術打包詳解
Android使用Ant技術打包詳解
Android使用Ant技術打包詳解
Android使用Ant技術打包詳解
Android使用Ant技術打包詳解
Android使用Ant技術打包詳解

使用:隻要打開指令行,進入這個目錄,一個ant指令就行。

轉自:http://handsomeliuyang.iteye.com/blog/1156070

繼續閱讀