1. ホーム
  2. android

[解決済み] Cordova のコマンドラインインターフェイスを使用して署名された APK ファイルを作成するにはどうすればよいですか?

2022-04-20 20:45:59

質問

という名前のサンプルアプリケーションを作りました。 checkStatus . さて、私は署名されたAPKファイルを作成したいと思います。だから私は私のテストのために異なるデバイスにそれをインストールすることができます。

そのために、ググってみたら、こんなのがありました。 ドキュメンテーション .

ドキュメントの通り、プロジェクトディレクトリに切り替えて、以下のコマンドを実行しました。

keytool -genkey -v -keystore key-name.keystore -alias alias-name -keyalg RSA -keysize 2048 -validity 10000

上記のコマンドを実行したところ、「Security」という名前のファイルができました。 key-name.keystoreprojectRoot/key-name.keystore .

そして、そのファイルをコピーペーストして projectRoot/platforms/android/key-name.keystore .

そのあと ant.properties に保存し、それを projectRoot/platforms/android .

そのファイルの中に次のようなコードを書きました。

key.store=projectRoot/key-name.keystore
key.alias=myApp

その後、以下のコマンドを実行してリリースしました。

Cordova builds android --release

以下のようなエラーを投げています。

 /home/projectRoot/platforms/android/cordova/node_modules/q/q.js:126
                throw e;
                      ^
Error code 1 for command: ant with args: release,-f,/home/projectRoot/platforms/android/build.xml,-Dout.dir=ant-build,-Dgen.absolute.dir=ant-gen

 Error: /home/projectRoot/platforms/android/cordova/build: Command failed with exit code 8
at ChildProcess.whenDone (/usr/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:135:23)
at ChildProcess.EventEmitter.emit (events.js:98:17)
at maybeClose (child_process.js:753:16)
at Process.ChildProcess._handle.onexit (child_process.js:820:5)

そこで、今回は key.store の値を ant.properties のようなファイルを作成します。

 key.store=/home/projectRoot/platforms/android/key-name.keystore

今回も cordova build android --release コマンドを実行します。同じエラーを投げます。

何が間違っていたのか、どなたか教えてください。

解決方法は?

ステップ1:

D:\projects\Phonegap\Example> cordova plugin rm org.apache.cordova.console --save

を追加します。 --save からプラグインを削除するようにします。 config.xml ファイルを作成します。

ステップ2:

Android 用のリリースビルドを生成するために、まずは AndroidManifest.xml ファイル(platforms/android)にあります。このファイルを編集して、次の行を変更してください。

<application android:debuggable="true" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">

と変更します。 android:debuggablefalse :

<application android:debuggable="false" android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">

cordova 6.2.0 からは android:debuggable タグを完全に削除しました。以下は、cordova からの説明です。

タイプ "HardcodedDebugMode" の問題についての説明です。 マニフェストから android:debuggable 属性を削除するのが最善です。 そうすると、ツールは自動的に android:debuggable=true を挿入します。 エミュレータやデバイスでデバッグするためにAPKをビルドするとき。そして APKのエクスポートなど、リリースビルドを実行すると、自動的に をfalseに設定します。

一方、マニフェスト ファイルで特定の値を指定した場合。 の場合、ツールは常にそれを使用します。このため、誤って デバッグ情報を含むアプリを作成することができます。

ステップ3:

これで、cordova にリリースビルドを生成するように指示することができます。

D:\projects\Phonegap\Example> cordova build --release android

次に、署名されていない APK ファイルを platforms/android/ant-build . この例では、ファイルは platforms/android/ant-build/Example-release-unsigned.apk

ステップ4.

注:キーストアは keystoreNAME-mobileapps.keystore を作成する場合は、次の手順を実行してください。

鍵の生成。

シンタックス

keytool -genkey -v -keystore <keystoreName>.keystore -alias <Keystore AliasName> -keyalg <Key algorithm> -keysize <Key size> -validity <Key Validity in Days>

Egs:

keytool -genkey -v -keystore NAME-mobileapps.keystore -alias NAMEmobileapps -keyalg RSA -keysize 2048 -validity 10000


keystore password? : xxxxxxx
What is your first and last name? :  xxxxxx
What is the name of your organizational unit? :  xxxxxxxx
What is the name of your organization? :  xxxxxxxxx
What is the name of your City or Locality? :  xxxxxxx
What is the name of your State or Province? :  xxxxx
What is the two-letter country code for this unit? :  xxx

NAME-mobileapps.keystoreという名前でキーストアが生成されました。

ステップ5:

生成された鍵ストアを

古いバージョンのコードバ

D:\projects\Phonegap\Example\platforms\android\ant-build

新バージョンcordova

D:\projects\Phonegap\Example\platforms\android\build\outputs\apk

署名されていないAPKに署名するには、JDKに含まれるjarsignerツールを実行します。

構文

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <keystorename> <Unsigned APK file> <Keystore Alias name>

Egs:

D:\projects\Phonegap\Example\platforms\android\ant-build> jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore NAME-mobileapps.keystore Example-release-unsigned.apk xxxxxmobileapps

または

D:\projects\Phonegap\Example\platforms\android\build\outputs\apk> jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore NAME-mobileapps.keystore Example-release-unsigned.apk xxxxxmobileapps

Enter KeyPhrase as 'xxxxxxxx'

これはapkを所定の位置に署名するものです。

ステップ6:

最後に、APKを最適化するためにZIPアラインツールを実行する必要があります。

D:\projects\Phonegap\Example\platforms\android\ant-build> zipalign -v 4 Example-release-unsigned.apk Example.apk 

または

D:\projects\Phonegap\Example\platforms\android\ant-build> C:\Phonegap\adt-bundle-windows-x86_64-20140624\sdk\build-tools\android-4.4W\zipalign -v 4 Example-release-unsigned.apk Example.apk

または

D:\projects\Phonegap\Example\platforms\android\build\outputs\apk> C:\Phonegap\adt-bundle-windows-x86_64-20140624\sdk\build-tools\android-4.4W\zipalign -v 4 Example-release-unsigned.apk Example.apk

これで、example.apkという最終的なリリースバイナリができ、Google Playストアでリリースすることができます。