Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Ant打包

Android Ant打包

編輯:關於Android編程

Android打包apk時,有時候需要打各種渠道包,例如 豌豆莢、華為手機市場、小米市場、360市場等,那麼每一種渠道打包時,都需要配置不同的數據元,如果渠道較多,那麼打包也是一個體力活。還有,我們在開發項目中,有測試環境、生產環境、備用環境等,每次打包不同的環境,可能需要修改服務器IP以及端口號,那麼打包也有點麻煩。那麼針對以上這兩種問題,到底有沒有一個合適的方案可以解決呢!答案是肯定的!我們可以采用Ant來實現對Android應用的自動打包。
使用Ant編譯打包Apk,IDE是基於Eclipse,如果你使用的是Android Studio,那麼請看Gradle工具。
Ant安裝以及配置
首先需要在Ant官網下載Ant下載鏈接,下載完成後,解壓到磁盤的某一個跟目錄下,接著需要在環境變量中配置,

在環境變量Path中添加 ;%ANT_HOME%/bin;%ANT_HOME%/lib;其中ANT_HOME是Ant的解壓目錄。例如‘E:\ant\apache-ant-1.9.7-bin\apache-ant-1.9.7’

配置成功後,可以在dos中,輸入命令 ‘ant -version’,如果輸出結果,表示配置成功。展示一下我電腦上的結果截圖,
輸入命令後的結果截圖
Ant編譯打包
1. 創建一個Android項目。(具體操作就不多說了)
2. 使用Android SDK命令創建Ant的build.xml。命令‘android update project –path .’
具體步驟: 打開命令行工具,切換路徑到項目所在的目錄,然後使用 android update project –path . 命令,在當前目錄下面創建build.xml文件,注意不要忘掉後面的 ‘.’。
運行命令後的截圖
3. 在IDE上刷新工程,可以看到項目根目錄下多了build.xml以及local.properties兩個文件。
local.properties指明了我們的android SDK的目錄。
build.xml則是ant構建的腳本,裡面其實大部分都是寫注釋,這是因為生成的這個build.xml直接引用了android SDK自帶的構建腳本。在自動化打包時,需要添加修改該build.xml文件。
下面列舉build.xml文件的標簽。
1.project標簽。
project標簽是構建文件的根標簽。<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwcmUgY2xhc3M9"brush:java;"> 它有如下屬性: name屬性:項目名。 default屬性:指定project默認執行時執行的target的名稱,表示默認的運行目標。 basedir屬性:指定項目的基准目錄。 description屬性:項目的描述。

2.target標簽。
target可以看做是一個任務,一個項 目標簽下可以有一個或多個target標簽。一個target標簽可以依賴其他的target標簽。

它有如下屬性:
name屬性:指定target元素的名稱。
depends屬性:用於描述target之間的依賴關系。
if屬性:用於驗證指定的屬性是否存在,若不存在,所在target將不會被執行。
unless 屬性:該屬性的功能與 if 屬性的功能正好相反,它也用於驗證指定的屬性是否存在,若不存在,所在 target 將會被執行。
description 屬性:該屬性是關於 target 功能的簡短描述和說明。

3.property 標簽
property 用於定義變量或參數的定義。

它有如下屬性:
name屬性:變量名字
value屬性:變量值

4.mkdir標簽
mkdir該標簽用於創建一個目錄,它有一個屬性dir用來指定所創建的目錄名。
5.jar標簽
jar用來生成一個JAR文件。

常用屬性有:
dir : 表示要創建目錄的路徑(包含要創建的目錄)。

6.javac標簽
javac該標簽用於編譯一個或一組java文件。

常用屬性有:
srcdir : 表示需要編譯的java文件的目標文件夾,一般是項目的src文件夾。
destdir :   表示編譯之後的class文件存放的位置,一般是build/classes。

7.java標簽
java該標簽用來執行編譯生成的.class文件。
8.delete標簽
delete該標簽用於對文件或目錄進行刪除。

PS:Ant的depends屬性指定了target的執行順序。Ant會依照depends屬性中target出現順序依次執行每個target。在執行之前,首先需要執行它所依賴的target。一個target只能被執行一次,即使有多個target依賴於它。如果沒有if或unless屬性,target總會被執行。

build.xml文件內容如下,有兩個文件是需要用戶自己手動創建的,並存放在當前項目目錄下。




    
    

    
         
    

    
    
    
        
    

    
    

    
    

    
    
    

    
    
    
    

ant.properties文件定義一些變量例如keystore密碼,apk存放目錄等;而custom_rules.xml這個文件就是用戶自定義的編譯規則文件。(ant.properties文件和custom_rules.xml文件需要我們手動創建)
ant.properties文件的內容大致如下所示,其中keystore密碼和alias密碼可以不指定(防洩漏),那麼在命令執行的過程中會要求你輸入,

#keystore文件存放目錄
key.store=E:\\me.keystore
#keystore別名
key.alias=me_keystore
#keystore密碼
key.store.password=********
#組織密碼
key.alias.password=********
#apk.dir表示存放最終生成apk的目錄
apk.dir=./apk
#定義項目名稱
app.name=ant_app
#渠道號,多個渠道號用逗號分隔
market_channels=91,360,wandoujia,baidu
#測試環境服務器配置
test.server.url=192.168.1.110:8080/xinxing
#生產環境服務器配置
rel.server.url=188.132.121.121:9000/xinxing
#測試環境標識 給apk命名的時候用
test.tag.name=test
#生產環境標識 給apk命名的時候用
release.tag.name=release
#版本號
version=1.2.1

ant.properties文件,我們創建好以後,其他項目是可以通用的。下面看看最復雜的、也是最難的custom_rules.xml文件的內容,




    

    

        
            
        
    

    

    
        
    
    
    


    
    
    
    

    

        

        
            
            
            
            
        
    
    

    

        

        
        

        

            
        
    
    

    
        
        
        

        

            
        
    

    

    

        

        
        
    

    

        
            
            
            
        
        

        

        

        
    

以上每一段代碼都有注釋,相信仔細看幾遍的,就會看懂。
經過以上幾部操作,我們就可以使用命令打包了。
PS:其中hostconfig.xml是服務地址配置文件,位於‘res/xml’中,打包不同的環境時,就需要修改這個文件。
首先在命令行下,定位到項目所在的目錄,輸入打包命令‘ant deploytest’ (測試環境),等一會,提示如下截圖所示,說明打包成功,
這裡寫圖片描述
在項目的工作目錄下,有一個‘apk’文件夾,我們打開該文件夾,便會看到,各個渠道包了!截圖如下所示:
ant 測試環境渠道包

我們打生產環境,輸入命名‘ant deployrel’,然後在‘apk’文件夾中,各個渠道包了!截圖如下所示:
ant 生產環境渠道包
到這兒,有個疑問,打包是成功了,但是hostconfig.xml和渠道名稱是不是真的和我們所配置的一致?那麼我們就檢驗一下,反編譯生成的apk,看看裡面的數據。
需要查看apk的xml文件,我們需要apktool.jar,具體操作,詳見Android安全攻防戰,反編譯與混淆技術完全解析
我反編譯了ant_app_baidu_release_201608010442.apk和ant_app_baidu_test_201608010421.apk,分別對比他們中的內容,截圖如下所示:
hostconfig.xml文件對比
hostconfig.xml文件對比
AndroidManifest.xml文件對比
AndroidManifest.xml文件對比
可以看出,使用ant打的包和我們的配置是一致的!
補充:當Android項目依賴了其他項目(library)時,在使用ant 打包,需要注意,首先需要進入到library項目所在的目錄,輸入命令 android update lib-project -p ./ (注意是 lib-project);
執行完之後,你會發現第三方工程目錄下多了build.xml文件和local.properties文件。然後你再執行打包命令就可以成功打包了。
總結
使用Android SDK命令生成來build.xml和local.properties,custom_rules.xml和ant.properties任何項目中都可以通用。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved