Android命令列手動編譯打包詳解
Android 命令列手動編譯打包過程圖
【詳細步驟】:
Step1:使用aapt生成R.java類檔案。
例:
F:/explorer/android-sdk-windows2.2/tools>f:/explorer/android-sdk-windows2.2/platforms/android-3/tools/aapt.exe package
-f -m -J F:/explorer/AndroidByread/gen -S res -I f:/explorer/android-sdk-windows2.2/platforms/android-3/android.jar -M AndroidManifest.xml
其中 -f -m -J F:/explorer/AndroidByread/gen 代表按覆蓋的形式在gen目錄下生成帶包路徑的R.java,-S res指定資原始檔 ,-I f:/explorer/android-sdk-windows2.2/platforms/android-3/android.jar 指定使用的android類,-M AndroidManifest.xml指定程式的配置檔案
aapt Usage:
Step2:使用android
SDK提供的aidl.exe把.aidl轉成.java檔案:
usage: aidl OPTIONS INPUT [OUTPUT]
aidl --preprocess OUTPUT INPUT...
OPTIONS:
-I<DIR> search path for import statements.
-d<FILE> generate dependency file.
-p<FILE> file created by --preprocess to import.
-o<FOLDER> base output folder for generated files.
-b fail when trying to compile a parcelable.
INPUT:
An aidl interface file.
OUTPUT:
The generated interface files.
Step3:編譯.java類檔案生成class檔案。
例:F:/explorer/AndroidByread>javac -encoding GB18030 -target 1.5 -bootclasspath F:/explorer/android-sdk-windows2.2/platforms/android-3/android.jar -d bin src/com/byread/reader/*.java gen/com/byread/reader/R.java
Step4:使用android SDK提供的dx.bat命令列指令碼生成classes.dex檔案。
例:
F:/explorer/AndroidByread>F:/explorer/android-sdk-windows2.2/platforms/android-3/tools/dx.bat --dex --output=F:/explorer/AndroidByread/bin/classes.dex f:/explorer/AndroidByread/bin/classes
其中classes.dex為生成的目標檔案,f:/explorer/AndroidByread/bin/classes為class檔案所在目錄
Step5:使用Android SDK提供的aapt.exe生成資源包檔案(包括res、assets、androidmanifest.xml等)。
F:/explorer/AndroidByread>F:/explorer/android-sdk-windows2.2/platforms/android-3/tools/aapt.exe package -f -M AndroidManifest.xml -S res -A assets -I F:/explorer/android-sdk-windows2.2/platforms/android-3/android.jar -F bin/byreadreader
將AndroidManifest.xml,res和assets資料夾中的資原始檔打包生成byreadreader,用法參見1
Step6:生成未簽名的apk安裝檔案:
apkbuilder ${output.apk.file} -u -z ${packagedresource.file} -f ${dex.file} -rf ${source.dir} -rj ${libraries.dir}
例:
F:/explorer/AndroidByread>f:/explorer/android-sdk-windows2.2/tools/apkbuilder.bat f:/explorer/byreadreader.apk –v -u -z f:/explorer/AndroidByread/bin/byreadreader -f f:/explorer/AndroidByread/bin/class.dex -rf F:/explorer/AndroidByread/src
其中f:/explorer/byreadreader.apk為生成的apk ,-z f:/explorer/AndroidByread/bin/byreadreader為資源包,f:/explorer/AndroidByread/bin/class.dex為類檔案包
Step7:使用jdk的jarsigner對未簽名的包進行apk簽名:
use jarsigner
jarsigner -keystore ${keystore} -storepass ${keystore.password} -keypass ${keypass} -signedjar ${signed.apkfile} ${unsigned.apkfile} ${keyalias}
例如:
F:/explorer/android-sdk-windows2.2/tools>jarsigner –keystore f:/explorer/eclipse3.5/bbyread.keystore -storepass byread002 -keypass byread002 -signedjar f:/explorer/byread.apk f:/explorer/byreadreader.apk byread
其中–keystore f:/explorer/eclipse3.5/bbyread.keystore 為金鑰檔案 -storepass byread002為金鑰檔案密碼 byread 為金鑰別名 -keypass byread002為金鑰別名密碼,-signedjar f:/explorer/byread.apk為簽名後生成的apk檔案 f:/explorer/byreadreader.apk為未簽名的檔案。
轉自:http://jojol-zhou.iteye.com/blog/729254