本文主要講解使用命令行打包android工程成apk文件,我的android工程結構如圖 
1.創建key: 使用keytool.exe(位于%JAVA_HOME%\bin\keytool.exe)創建xxx.keystore,在命令行輸入: keytool -genkey -alias debug.keystore -keyalg RSA -validity 20000 -keystore debug.keystore 說明: -genkey 產生密鑰 -alias debug.keystore 別名 -keyalg RSA 使用RSA算法對簽名加密 -validity 20000 有效期限2000天 -keystore debug.keystore 如果之前創建過xxx.keystore,第一步就可以省略,以后直接使用此xxx.keystore就可以了
2.簽名:使用jarsigner.exe(位于%JAVA_HOME%\bin\jarsigner.exe)簽名 jarsigner -verbose -keystore debug.keystore -signedjar demo_signed.apk demo.apk debug.keystore 說明: -verbose 輸出簽名的詳細信息 -keystore debug.keystore 密鑰庫位置 -signedjar demo_signed.apk demo.apk debug.keystore 正式簽名,三個參數中依次為簽名后產生的文件demo_signed.apk,要簽名的文件demo.apk和密鑰庫demo.keystore
3.對齊:使用zipalign.exe(位于android-sdk-windows\tools\zipalign.exe)對齊 zipalign -v 4 demo_signed.apk demo_signed_aligned.apk
說明: zipalign能夠使apk文件中未壓縮的數據在4個字節邊界上對齊(4個字節是一個性能很好的值)
如果使用IDE工具開發android,可以通過IDE導出未簽名的apk包。因此,知道上面幾條命令就可以了。 如果你需要手動打apk包,請看下面打包過程 0.打開cmd,cmd目錄 C:\Documents and Settings\user>
1.生成R.java文件 創建gen目錄,如果F:\workspace\LBSDemo目錄下沒有gen目錄,運行 mkdir F:\workspace\LBSDemo\gen
運行aapt命令生成R.java文件 aapt.exe package -f -m -J F:\workspace\LBSDemo\gen -S F:\workspace\LBSDemo\res -I H:\android-sdk-windows\platforms\android-7\android.jar -M F:\workspace\LBSDemo\AndroidManifest.xml
2.將.aidl文件轉換成.java文件 aidl.exe -pH:\android-sdk-windows\platforms\android-7\framework.aidl F:\workspace\LBSDemo\src\com\lbs\aidl\Remote.aidl F:\workspace\LBSDemo\gen\com\lbs\aidl\Remote.java
3.將java文件編譯成class文件 創建bin目錄,如果F:\workspace\LBSDemo目錄下沒有bin目錄,運行 mkdir F:\workspace\LBSDemo\bin
運行javac編譯java文件 javac -encoding UTF-8 -target 1.5 -bootclasspath H:\android-sdk-windows\platforms\android-7\android.jar -d F:\workspace\LBSDemo\bin F:\workspace\LBSDemo\src\com\baidu\mapapi\*.java F:\workspace\LBSDemo\src\com\lbs\*.java F:\workspace\LBSDemo\src\com\lbs\util\*.java F:\workspace\LBSDemo\gen\com\lbs\R.java F:\workspace\LBSDemo\gen\com\lbs\aidl\Remote.java -classpath F:\workspace\LBSDemo\libs\baidumapapi.jar
4.生成.dex文件 dx.bat --dex --output=F:\workspace\LBSDemo\bin\classes.dex F:\workspace\LBSDemo\bin F:\workspace\LBSDemo\libs
5.生成資源包文件 aapt.exe package -f -M F:\workspace\LBSDemo\AndroidManifest.xml -S F:\workspace\LBSDemo\res -A F:\workspace\LBSDemo\assets -I H:\android-sdk-windows\platforms\android-7\android.jar -F F:\workspace\LBSDemo\bin\resources
6.生成未簽名的apk包 apkbuilder.bat F:\workspace\LBSDemo\bin\LBSDemo.apk -v -u -z F:\workspace\LBSDemo\bin\resources -f F:\workspace\LBSDemo\bin\classes.dex -rf F:\workspace\LBSDemo\src -rj F:\workspace\LBSDemo\libs -nf F:\workspace\LBSDemo\libs
7.簽名 H: && jarsigner -verbose -keystore debug.keystore -storepass android -signedjar F:\workspace\LBSDemo\bin\LBSDemo_signed.apk F:\workspace\LBSDemo\bin\LBSDemo.apk debug.keystore
簽名需要當前目錄在keystore目錄下,否則出現下面錯誤 jarsigner: 找不到 H:\demo.keystore 的證書鏈。
8.對齊 zipalign -v 4 F:\workspace\LBSDemo\bin\LBSDemo_signed.apk F:\workspace\LBSDemo\bin\LBSDemo_signed_aligned.apk
自動打包工具:http://download.csdn.net/detail/chenfeng0104/5005069
|