最近、Android 開発をしている際に、プロジェクトにサードパーティのコードを参照する必要があります。通常、Eclipse でコンパイル出力をライブラリに設定するだけで済むのですが、Eclipse でコンパイルすると謎のエラーが多く発生します。そのため、コマンドラインでコードをコンパイルする必要があります。具体的な手順は以下の通りです:
- コンパイルに使用する Java をインストールし、Android Platform-tools と Ant をインストールし、各種環境変数を設定します。一部の Linux では Ant がデフォルトで組み込まれていますが、Windows では自分でインストールする必要があります。
- Android ツールを使用してコードのコンパイル設定を更新します。
- Ant ツールを使用してコンパイルします。デバッグ版とリリース版の両方をコンパイルできます。
- コードに使用する署名用の秘密鍵を生成し、APK に署名します。
- 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 = "$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
keystore を作成#
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 = 国コード
# keystore を作成
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 の 2 つの変数を設定すると、ant release 時に自動的に生成された APK に署名と整列が行われます。
echo "key.store=product.keystore" > ant.properties
echo "key.alias=product.keystore" >> ant.properties
コードに手動で署名します。各パラメータの説明は以下の通りです。-verbose:出力を表示する、-keystore:キーストアのエイリアス、-signedjar:署名された APK ファイル、最初のパラメータはターゲットファイル、2 番目は未署名の 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