Cordova コマンドラインインターフェースを使用して署名済み APK ファイルを作成する方法は? 質問する

Cordova コマンドラインインターフェースを使用して署名済み APK ファイルを作成する方法は? 質問する

という名前のサンプル アプリケーションを作成しましたcheckStatus。署名済みの APK ファイルを作成したいと考えています。テストのためにさまざまなデバイスにインストールできるようにします。

これについては、Googleで検索してこれを見つけましたドキュメンテーション

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

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

key-name.keystore上記のコマンドを実行すると、 という名前のファイルが作成されましたprojectRoot/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

ステップ1:

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

を追加して--save、ファイルからプラグインを削除しますconfig.xml

ステップ2:

Android のリリース ビルドを生成するには、まず、platforms/android にあるファイルに小さな変更を加える必要がありますAndroidManifest.xml。ファイルを編集して、次の行を変更します。

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

android:debuggable次のように変更しますfalse:

<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 属性を省略することをお勧めします。そうすると、エミュレーターまたはデバイスでデバッグするために APK をビルドするときに、ツールによって android:debuggable=true が自動的に挿入されます。また、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:

注: この Git リポジトリにキーストアがありますkeystoreNAME-mobileapps.keystore。別のキーストアを作成する場合は、次の手順に従ってください。

キー生成:

構文:

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

例:

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

新バージョンコルドバ

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>

例:

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 align ツールを実行する必要があります。

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 ストアでリリースできるようになりました。

おすすめ記事