banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

Android開発におけるAntコマンドラインの使用とAPKの署名

最近、Android 開発をしている際に、プロジェクトにサードパーティのコードを参照する必要があります。通常、Eclipse でコンパイル出力をライブラリに設定するだけで済むのですが、Eclipse でコンパイルすると謎のエラーが多く発生します。そのため、コマンドラインでコードをコンパイルする必要があります。具体的な手順は以下の通りです:

  1. コンパイルに使用する Java をインストールし、Android Platform-tools と Ant をインストールし、各種環境変数を設定します。一部の Linux では Ant がデフォルトで組み込まれていますが、Windows では自分でインストールする必要があります。
  2. Android ツールを使用してコードのコンパイル設定を更新します。
  3. Ant ツールを使用してコンパイルします。デバッグ版とリリース版の両方をコンパイルできます。
  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 = "$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

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。