[原] Android自動打包之命令列打包

來源:互聯網
上載者:User

標籤:android   blog   http   java   使用   os   strong   檔案   

Android自動打包流程詳細圖:

 

總結為以下幾個步驟:

1. 產生R檔案2. Java代碼編譯成class檔案3. class檔案產生dex檔案4. 打包資源5. 產生apk6. 建立密匙7. 簽名apk 下面用Ubuntu命令列來打包,流程如下:1. 產生R檔案,命令如下:aapt package -f -m -J $BUILD_SOURCE_PATH/$ANDROID_GEN \-A $BUILD_SOURCE_PATH/$PACKAGE_RESOURCE_FILE \-S $BUILD_SOURCE_PATH/$ANDROID_RESOURCE_DIRECTORY \-I $BUILD_API_LEVEL_JAR \-M $BUILD_SOURCE_PATH/$MANIFEST_FILE -f 如果編譯產生的檔案已經存在,強制覆蓋。
-m 使產生的包的目錄存放在-J參數指定的目錄
-J 指定產生的R.java 的輸出目錄路徑
-S 指定res檔案夾的路徑-I 指定某個版本平台的android.jar檔案的路徑-A 指定assert檔案夾的路徑 2.將Java代碼編譯成class檔案,命令列如下:javac -encoding UTF-8 \-target 1.7 \-bootclasspath $BUILD_API_LEVEL_JAR \-d $BUILD_SOURCE_PATH/$ANDROID_BIN/$ANDROID_BIN_CLASSES \$BUILD_SOURCE_PATH/$ANDROID_GEN/com/clarck/httpclientnew/R.java \$BUILD_SOURCE_PATH/src/com/clarck/httpclientnew/*.java -encoding <編碼>        指定編碼格式-target <版本>               產生特定 VM 版本的類檔案
-bootclasspath <路徑>        覆蓋引導類檔案的位置
-d <目錄>                    指定存放產生的類檔案的位置
-sourcepath <路徑>           指定尋找輸入源檔案的位置
 3. class檔案產生dex檔案,命令列如下:dx --dex --output=$BUILD_SOURCE_PATH/$ANDROID_BIN/$ANDROID_CLASSES_DEX \$BUILD_SOURCE_PATH/$ANDROID_BIN/$ANDROID_BIN_CLASSES --output=<要產生的classes.dex路徑> <要處理的class檔案的路徑> 4. 打包資源,命令列如下:aapt package -f -M $BUILD_SOURCE_PATH/$MANIFEST_FILE \-S $BUILD_SOURCE_PATH/$ANDROID_RESOURCE_DIRECTORY \-A $BUILD_SOURCE_PATH/$PACKAGE_RESOURCE_FILE \-I $BUILD_API_LEVEL_JAR \-F $BUILD_SOURCE_PATH/$ANDROID_BIN/byreadreader -f 如果編譯產生的檔案已經存在,強制覆蓋
-M 指定AndroidManifest.xml的路徑
-S 指定res檔案夾路徑-I 指定某個版本平台的android.jar的路徑-F 指定輸出檔案完整路徑 5. 產生apk,命令列如下:apkbuilder $BUILD_APK_PATH/$BUILD_APK_NAME \-v -u -z $BUILD_SOURCE_PATH/$ANDROID_BIN/byreadreader \-f $BUILD_SOURCE_PATH/$ANDROID_BIN/$ANDROID_CLASSES_DEX \-rf $BUILD_SOURCE_PATH/$ANDROID_SRC -v Verbose 顯示過程資訊
-u 建立一個無簽名的包
-z 指定apk資源路徑
-f 指定dex檔案路徑-rf 指定源碼路徑 6. 建立密匙,命令列如下:keytool -genkey -alias release -keyalg RSA -validity 20000 -keystore release.keystore -genkey      在使用者主目錄中建立一個預設檔案".keystore",還會產生一個mykey的別名,mykey中包含使用者的公開金鑰、私密金鑰和認證
-alias       產生別名
-keyalg      指定密鑰的演算法 
-validity    指定建立的認證有效期間多少天
-keystore    指定密鑰庫的名稱(產生的各類資訊將不在.keystore檔案中) 7. 簽名apk,命令列如下:jarsigner -verbose -keystore release.keystore -storepass [email protected]#$%^ -keypass [email protected]#$%^ -signedjar $BUILD_APK_PATH/$BUILD_RELEASE_APK_NAME $BUILD_APK_PATH/$BUILD_APK_NAME release -verbose  簽名/驗證時輸出詳細資料
-keystore 密鑰庫位置
-storepass          用於密鑰庫完整性的口令
-keypass            專用密鑰的口令(如果不同)
-signedjar          已簽名的 JAR 檔案的名稱 (第一個apk是簽名之後的檔案, 第二個apk是需要簽名的檔案)
 註:關於混淆代碼,只需要在project.properties中指定用來混淆的.pro檔案即可。
 以上命令可以綜合使用一個shell指令碼來執行,具體demo詳見:https://github.com/clarck/CommandAutoBuild

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.