という名前のサンプル アプリケーションを作成しました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 ストアでリリースできるようになりました。