Android 自動編譯、打包生成apk檔案 3 - 使用SDK Ant方式
之前第一篇和第二篇分別是都是完全自己手寫程式碼,自己測試並執行所有命令列命令,並且把所有命令都用翻譯成ant標籤,現在可以使用ant自動打包了。
但是還存在問題,首先前兩步驟沒有加混淆(proguard)支援,而且複用也要檢查下修改哪些內容,或者跨平臺需要修改.bat檔案引用等。
現在Android SDK中提供了包含之前寫過的操作的封裝,只需要使用一條命令android update project生成build.xml ,之後再修改配置檔案支援不同特性即可,完全不用寫ant程式碼,這些都由Android SDK自動生成。
一、生成SDK 命令生成build.xml檔案
1. 執行命令建立
- D:\ProjectDemo>android update project --name ProjectDemo --target 8 --path ./
- Updated project.properties
- Updated local.properties
- Added file D:\ProjectDemo\build.xml
- 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執行專案
- 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
相關文章
- Android Apk 檔案反編譯和重新打包的過程分析AndroidAPK編譯
- Android Apk反編譯系列教程(二)APK重打包AndroidAPK編譯
- flutter常見問題【3】:Flutter 使用Android studio 打包生成apkFlutterAndroidAPK
- Flutter 38: 圖解 Android 打包 APK 檔案Flutter圖解AndroidAPK
- Android Studio打包專案:APKAndroidAPK
- Android studio 自動複製生成的 apkAndroidAPK
- Android Apk反編譯系列教程(一)如何反編譯APKAndroidAPK編譯
- Gluon 編譯 JavaFx -> android apk編譯JavaAndroidAPK
- iOS自動化編譯打包iOS編譯
- Android APK打包流程AndroidAPK
- android 反編譯APK取原始碼。Android編譯APK原始碼
- Flutter 打包 android端 apkFlutterAndroidAPK
- MAC使用APKTool反編譯apk修改版本號後重新打包MacAPK編譯
- 【Android APK】解析SD卡上的APK檔案AndroidAPKSD卡
- Android APK反編譯技巧全講解AndroidAPK編譯
- Android-ffmpeg編譯so檔案Android編譯
- Android studio匯出apk檔案AndroidAPK
- 用Android SDK Build Tools手動構建APKAndroidUIAPK
- 簽名打包Android版apkAndroidAPK
- [譯] Android效能優化:APK瘦身方式大彙總Android優化APK
- Console 自動生成 Model 檔案
- 使用AndroidKiller進行APK反編譯AndroidAPK編譯
- Android 編譯打包的那些疑問Android編譯
- 基於Vue-Cli 打包自動生成/抽離相關配置檔案Vue
- Android開發:APK的反編譯(獲取程式碼和資原始檔)AndroidAPK編譯
- Android Studio打包apk,aar,jar包AndroidAPKJAR
- 基於vue.ant.design的單檔案方式遞迴生成選單Vue遞迴
- Cordova 打包 apk,html 打包 apkAPKHTML
- Android進階:十四、熟悉Android打包編譯的流程Android編譯
- 使用mybatis-generator自動生成model、dao、mapping檔案MyBatisAPP
- 自動生成Mybatis的Mapper檔案MyBatisAPP
- Centos 下安裝 Android SDK 供 Jenkins 打包使用CentOSAndroidJenkins
- Android Apk反編譯系列教程(三)Android Studio除錯smali程式碼AndroidAPK編譯除錯
- 第19篇 Protocol Buffers 編譯器生成proto檔案Protocol編譯
- 自動生成檔案層級樹類
- ADB匯出app到電腦生成apk檔案APPAPK
- QT5.12.2部署Android環境和編譯apkQTAndroid編譯APK
- appium 能打包成 apk,啟動這個 apk 就能調起待測 app 自動化麼APPAPK
- 使用 Fastlane 實現 iOS 跟 Android 自動打包指令碼ASTiOSAndroid指令碼