最近在做 Android 開發時,需要引用第三方的代碼進項目,一般情況下,直接在 Eclipse 下設置需要導入的代碼的編譯輸出為 library 即可,但是很多代碼在 Eclipse 下編譯會出現很多莫名其妙的錯誤。因而只能使用命令行方式對代碼進行編譯。具體方法如下:
1. 安裝編譯用的 Java,安裝 Android Platform-tools,安裝 Ant,設置好各種環境變量。部分 Linux 下 Ant 已經默認集成,Windows 下需要自行安裝。 2. 使用 Android 工具更新代碼的編譯配置。 3. 使用 Ant 工具進行編譯,可編譯 Debug 版和 Release 版本。 4. 生成代碼簽名用的私鑰,並對 APK 進行簽名。 5. 對 APK 文件進行對齊,對大文件 APK 有不錯的效果。
以下是參考 Bash 代碼,可自己需要更改,執行時,sudo bash XXX.sh 即可
# 設置 Java Home
JAVA_HOME = "/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home"
設置 android Home#
ANDROID_HOME="~/android-sdk-macosx"
設置 path#
PATH = "$ANDROID_HOME/tools:$JAVA_HOME/bin:$PATH"
更新當前項目#
android update project --path .
#android update project --path ./Library/lib1
#android update project --path ./Library/lib2
刪除 keystore#
rm -f product.keystore
生成 keystone#
keytool -genkey -alias product.keystore -keyalg RSA -validity 40000 \
-keystore product.keystore -storepass password -keypass password \
-dname "CN=Product OU=Android Team O=Organization L=Hongkong ST=Hongkong C=China"
清理#
ant clean
刪除 ant.properties#
rm -f ant.properties
生成 ant.properties#
echo "key.store=product.keystore" > ant.properties
echo "key.alias=product.keystore" >> ant.properties
構建 apk#
ant release
簽名 APK#
jarsigner -verbose -keystore product.keystore -signedjar \#
bin/product_signed.apk bin/product-release-unsigned.apk product.keystore#
對 APK 文件進行對齊#
zipalign -v 4 bin/product_signed.apk bin/product_final.apk#
說明: 更新 Android 的 ant 編譯配置,如果代碼的結構變更,請執行,如果代碼中包含引用的第三方庫代碼,需要分別對這些代碼進行更新。
# 更新當前項目
android update project --path .
#android update project --path ./Library/lib1
#android update project --path ./Library/lib2
生成簽名用的 Keystore 文件,幾個參數的說明 -genkey 生成秘鑰證書 -alias 別名 -keyalg 秘鑰的計算算法 -validity 有效期 -keystore 秘鑰庫文件路徑 -storepass 秘鑰庫密碼 -keypass 秘鑰證書密碼 -dname 發行者信息 CN= 發行者姓名 (個人姓名或產品名) OU= 組織單元名 (團隊名) O= 組織機構名 (公司名) L= 城市 / 地區 ST= 州 / 省 C= 國家代碼
# 生成 keystone
keytool -genkey -alias product.keystore -keyalg RSA -validity 40000 \
-keystore product.keystore -storepass password -keypass password \
-dname "CN=Product OU=Android Team O=Organization L=Hongkong ST=Hongkong C=cn"
生成 ant 自動編譯用的 ant.properties 文件,設置 key.store 和 key.alias 兩個變量後,ant release 時會自動對生成的 APK 簽名和對齊
echo "key.store=product.keystore" > ant.properties
echo "key.alias=product.keystore" >> ant.properties
手動對代碼簽名,幾個參數的說明 -verbose 顯示輸出 -keystore keystore 別名 -signedjar 簽名 apk 文件,第一個參數為目標文件,第二個為未簽名 apk
# 簽名 APK
jarsigner -verbose -keystore product.keystore -signedjar bin/product_signed.apk bin/product-release-unsigned.apk product.keystore
手動對 APK 進行對齊
# 對 APK 文件進行對齊
zipalign -v 4 bin/product_signed.apk bin/product_final.apk