Android 自動編譯、打包生成apk檔案 3 - 使用SDK Ant方式

yangxi_001發表於2014-03-13
之前第一篇和第二篇分別是都是完全自己手寫程式碼,自己測試並執行所有命令列命令,並且把所有命令都用翻譯成ant標籤,現在可以使用ant自動打包了。
    但是還存在問題,首先前兩步驟沒有加混淆(proguard)支援,而且複用也要檢查下修改哪些內容,或者跨平臺需要修改.bat檔案引用等。
    現在Android SDK中提供了包含之前寫過的操作的封裝,只需要使用一條命令android update project生成build.xml ,之後再修改配置檔案支援不同特性即可,完全不用寫ant程式碼,這些都由Android SDK自動生成。

一、生成SDK 命令生成build.xml檔案
1. 執行命令建立
  1. D:\ProjectDemo>android update project --name ProjectDemo --target 8 --path ./  
  2. Updated project.properties  
  3. Updated local.properties  
  4. Added file D:\ProjectDemo\build.xml  
  5. Updated file D:\ProjectDemo\proguard.cfg  

2. 結果
執行此命令會生成4個檔案:
project.properties
local.properties
build.xml
proguard.cfg


3. 引數解釋
--name ProjectDemo  專案名稱
--target 8          指定專案Android版本
--path ./           指定專案路徑

如果不知道target後面使用哪個版本,可以使用如下命令檢視本地支援Android版本號:
列出不同版本平臺的對應id編號
android list targets



4. 相關資料
如果想了解android update project命令更多使用介紹,可以檢視Android官方網站:
《Managing Projects from the Command Line》
http://developer.android.com/tools/projects/projects-cmdline.html
如果想了解andorid 命令參及含義,可以檢視:
http://developer.android.com/tools/help/android.html


二、手動配置一些屬性
1. 設定SDK路徑
修改local.properties檔案以下屬性值,指定到本地SDK目錄
sdk.dir=
例如:
sdk.dir=D:\\android-sdk-windows

2. 設定簽名屬性
把建立的密匙release.keystore放到當前目錄下,並在此目錄下建立ant.properties空檔案,填入以下內容
key.store=release.keystore
key.store.password=antPassword
key.alias.password=antPassword
key.alias=release
proguard.config=proguard.cfg


三、使用ant執行專案
  1. ant release  

可選:
debug:帶除錯用簽名的構建
release:構建應用程式,生成的apk必須簽名才可以釋出
install:安裝除錯構建的包到執行著的模擬器或者裝置;


通常ant專案只需要執行ant命令即可,但是Android提供了擴充套件引數,更多引數可以檢視以下網址Ant Command Reference部分:
《Building and Running from the Command Line》
http://developer.android.com/tools/building/building-cmdline.html



四、異常記錄
異常一、
BUILD FAILED
D:\ProjectDemo\build.xml:83: Cannot find D:\ProjectDemo\android-sdk-windows\tools\ant\build.xml imported from D:\ProjectDemo\build.xml
修改local.projects,必須是雙斜槓
sdk.dir=D:\\android-sdk-windows


異常二:
     [aapt] D:\ProjectDemo\res\layout\activity_main.xml:2: error: Error: String types not allowed (at 'layout_width' with value 'match_parent').
     [aapt] D:\ProjectDemo\res\layout\activity_main.xml:2: error: Error: String types not allowed (at 'layout_height' with value 'match_parent').

BUILD FAILED
D:android-sdk-windows\tools\ant\build.xml:650: The following error occurred while executing this line:
D:android-sdk-windows\tools\ant\build.xml:691: null returned: 1

Total time: 1 second

當前Andorid版本不支援match_parent屬性值,match_parent是Android 8以後開始支援的屬性值,修改AndroidManifest中<uses-sdk android:minSdkVersion="8" />最少也要大於8。不過也可以把match_parent改為FILL_PARENT

轉載請註明出處:http://blog.csdn.net/androiddevelop/article/details/11553215

相關文章