checkStatus
という名前のサンプルアプリケーションを作成しました。今私は署名付きAPKファイルを作成したいです。それで私は私のテストのために異なるデバイスにそれをインストールすることができます。
このために、私はグーグルでこの ドキュメント を見つけました。
ドキュメントに従って、私は自分のプロジェクトディレクトリに切り替えて、次のコマンドを実行しました。
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
コマンドを実行しました。同じエラーが発生します。
誰が私が間違ったことをしたことを私に言うことができますか?
D:\projects\Phonegap\Example> cordova plugin rm org.Apache.cordova.console --save
--save
ファイルからプラグインを削除するようにconfig.xml
を追加します。
Android用のリリースビルドを生成するには、まず、platform/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に設定されます。
一方、マニフェストファイルで特定の値を指定した場合、ツールは常にそれを使用します。これにより、誤ってデバッグ情報を使用してアプリを公開する可能性があります。
これで、cordovaにリリースビルドを生成するように指示できます。
D:\projects\Phonegap\Example> cordova build --release Android
それから、署名なしAPKファイルをplatforms/Android/ant-build
に見つけることができます。この例では、ファイルはplatforms/Android/ant-build/Example-release-unsigned.apk
です。
注:このGit Repoにキーストア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という名前でキーストアが生成されました。
生成されたキーストアを
旧バージョンコルドバ
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
OR
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が所定の位置に署名します。
最後に、Zip整列ツールを実行してAPKを最適化する必要があります。
D:\projects\Phonegap\Example\platforms\Android\ant-build> zipalign -v 4 Example-release-unsigned.apk Example.apk
OR
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
OR
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ストアで公開できます。
Cordova 4(およびそれ以降)の@malcubierreの更新 -
release-signing.properties
というファイルを作成し、APPFOLDER\platforms\Android
フォルダーに置きます。
ファイルの内容:2行目以外のすべての=の後に編集
storeFile=C:/yourlocation/app.keystore
storeType=jks
keyAlias=aliasname
keyPassword=aliaspass
storePassword=password
それからこのコマンドはリリースバージョンを構築する必要があります。
cordova build Android --release
現在の ドキュメント では、キーストアでbuild.jsonを指定することができます。
{
"Android": {
"debug": {
"keystore": "..\Android.keystore",
"storePassword": "Android",
"alias": "mykey1",
"password" : "password",
"keystoreType": ""
},
"release": {
"keystore": "..\Android.keystore",
"storePassword": "",
"alias": "mykey2",
"password" : "password",
"keystoreType": ""
}
}
}
そして、--buildConfig argumenteを指定してcommandoを実行します。
cordova run Android --buildConfig
ステップ1:
cordova\platforms\Android
antに移動し、キーストアファイル情報を含むant.properties
ファイルと呼ばれるファイルを作成します(このキーストアは、お気に入りのAndroid SDK、スタジオから生成できます)。
key.store=C:\\yourpath\\Yourkeystore.keystore
key.alias=youralias
ステップ2:
コルドバパスに行き、実行してください:
cordova build Android --release
注:キーストアとキーパスワードを尋ねるプロンプトが表示されます。
YourApp-release.apkが\cordova\platforms\Android\ant-build
に表示されます。
cordova 6.2.0 では、リリースビルドを作成する簡単な方法があります。ここに他のステップを参照して下さい ステップ1、2および4
cd cordova/ #change to root cordova folder
platforms/Android/cordova/clean #clean if you want
cordova build Android --release -- --keystore="/path/to/keystore" --storePassword=password --alias=alias_name #password will be prompted if you have any
Mac(osx)では、2つの.shファイルを生成しました。1つは最初の出版物用、もう1つは更新用です。
#!/bin/sh
echo "Ionic to Signed APK ---- [email protected] // Benjamin Rathelot\n"
printf "Project dir : "
read DIR
printf "Project key alias : "
read ALIAS
cd $DIR/
cordova build --release Android
cd platforms/Android/build/outputs/apk/
keytool -genkey -v -keystore my-release-key.keystore -alias $ALIAS -keyalg RSA -keysize 2048 -validity 10000
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore Android-release-unsigned.apk $ALIAS
zipalign -v 4 Android-release-unsigned.apk signedApk.apk
そしてあなたのアプリを更新する:
#!/bin/sh
echo "Ionic to Signed APK ---- [email protected] // Benjamin Rathelot\n"
printf "Project dir : "
read DIR
printf "Project key alias : "
read ALIAS
cd $DIR/
cordova build --release Android
cd platforms/Android/build/outputs/apk/
rm signedApk.apk
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore Android-release-unsigned.apk $ALIAS
zipalign -v 4 Android-release-unsigned.apk signedApk.apk
ホームフォルダ、またはアプリフォルダをトッピングしているフォルダにいるとします。このスクリプトを使用するようにchmodを正しく設定してください。その後:
./ionicToApk.sh # or whatever depending of the name of your file, in CLI
署名されたapkは、SignedApk.apkとしてあなたのAppフォルダ/ platform/Android/build/output/apk /にあります。最初のスクリプトで定義された正しいキーエイリアスとパスワードを必ず使用してください
アプリをアップデートする場合は、まずバージョンコードとバージョン名を確認してください。また、以前のキーストアがあることを確認してください。
アプリを更新している場合は、手順1,3,4に従ってください。
私たちのリリースビルドを生成するためにあなたのcordovaプロジェクトに行きます:
D:\projects\Phonegap\Example> cordova build --release Android
それから、私たちは未署名のAPKファイルをplatform/Android/ant-buildに見つけることができます。この例では、ファイルは
ant-buildを使った場合
yourproject/platforms/Android/ant-build/Example-release-unsigned.apk
_または_
gradle-buildを使った場合
yourProject/platforms/Android/build/outputs/apk/Example-release-unsigned.apk
keytool -genkey -v -keystore <keystoreName>.keystore -alias <Keystore AliasName> -keyalg <Key algorithm> -keysize <Key size> -validity <Key Validity in Days>
keytoolコマンドが認識しない場合は、この手順を実行してください。
Keytool実行可能ファイルがあるディレクトリがパス上にあることを確認してください。 (たとえば、私のWindows 7マシンでは、C:¥Program Files(x86)¥Java¥jre6¥binにあります。)
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という名前でキーストアが生成されました。
生成したキーストアをD:¥projects¥Phonegap¥Example¥platform¥Android¥ant-buildに配置します。
未署名のAPKに署名するには、JDKにも含まれているjarsignerツールを実行します。
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore <keystorename <Unsigned APK file> <Keystore Alias name>
調整できない場合は、次の手順を実行してください。
(1) [このPC]を右クリックし、[プロパティ]> [システムの詳細設定]> [環境変数]を右クリックして、[PATH]、[編集]の順に選択します。
(2) jdk binフォルダのパスを環境変数に追加します。これは次のようになります。
"C:¥Program Files¥Java¥jdk1.8.0_40¥bin"。
D:\projects\Phonegap\Example\platforms\Android\ant-build> jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore NAME-mobileapps.keystore Example-release-unsigned.apk xxxxxmobileapps
Enter KeyPhrase as 'xxxxxxxx'
これでapkが所定の位置に署名します。
最後に、Zip整列ツールを実行してAPKを最適化する必要があります。
zipalignが認識しない場合
(1) あなたのAndroid SDKパスに移動し、それが通常Android-SDK\build-tools\23.0.3にあるzipalignを見つける
(2) zipalignファイルのコピーをあなたのgenerate release apkフォルダーにコピーして、通常以下のパスに入れてください。
yourproject/platform/Android/ant-build/Example-release-unsigned.apk
D:\projects\Phonegap\Example\platforms\Android\ant-build> zipalign -v 4 Example-release-unsigned.apk Example.apk
OR
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
これで、example.apkという最終リリースのバイナリができました。これをGoogle Playストアで公開できます。
##Generated signed apk from commandline
#variables
APP_NAME=THE_APP_NAME
APK_LOCATION=./
APP_HOME=/path/to/THE_APP
APP_KEY=/path/to/Android_key
APP_KEY_ALIAS=the_alias
APP_KEY_PASSWORD=123456789
zipalign=$Android_HOME/build-tools/28.0.3/zipalign
#the logic
cd $APP_HOME
cordova build --release Android
cd platforms/Android/app/build/outputs/apk/release
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore $APP_KEY ./app-release-unsigned.apk $APP_KEY_ALIAS <<< $APP_KEY_PASSWORD
rm -rf "$APK_LOCATION/$APP_NAME.apk"
$zipalign -v 4 ./app-release-unsigned.apk "$APK_LOCATION/$APP_NAME.apk"
open $APK_LOCATION
#the end
Cmdでcordova release APKファイルをビルドします。
キーストアファイルパス :キーストアファイルパス(F:/cordova/myApp/xxxxx.jks)
キーストアパスワード :xxxxx
キーストアエイリアス :xxxxx
キーストアエイリアスパスワード :xxxxx
zipalign.exeのパス :zipalign.exeファイルのパス(C:\ Users\xxxx\AppData\Local\Android\sdk\build-tools\25.0.2\zipalign)
Android UNSIGNED APK名 :Android-release-unsigned.apk
AndroidリリースAPK名 :Android-release.apk
以下の手順をcmdで実行します(管理者として実行)