web-dev-qa-db-ja.com

Cordovaコマンドラインインターフェイスを使用して署名付きAPKファイルを作成する方法

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

このために、私はグーグルでこの ドキュメント を見つけました。

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

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

上記のコマンドを実行した後、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コマンドを実行しました。同じエラーが発生します。

誰が私が間違ったことをしたことを私に言うことができますか?

152
vasan

ステップ1:

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

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

ステップ2:

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

<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属性を除外するのが最善です。実行すると、エミュレータまたはデバイスでデバッグする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 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という名前でキーストアが生成されました。

ステップ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

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が所定の位置に署名します。

ステップ6:

最後に、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ストアで公開できます。

274
cfprabhu

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
107
Jon

現在の ドキュメント では、キーストアで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
48
infinito84

ステップ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
11
KrIsHnA

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 /にあります。最初のスクリプトで定義された正しいキーエイリアスとパスワードを必ず使用してください

6
Ben

アプリをアップデートする場合は、まずバージョンコードとバージョン名を確認してください。また、以前のキーストアがあることを確認してください。

アプリを更新している場合は、手順1,3,4に従ってください。

ステップ1:

私たちのリリースビルドを生成するためにあなたの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

ステップ2:

キー生成:

構文:

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という名前でキーストアが生成されました。

ステップ3:

生成したキーストアを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が所定の位置に署名します。

ステップ4:

最後に、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ストアで公開できます。

0
Arpit Patel
##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
0
nicolsondsouza

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で実行します(管理者として実行)

  1. コルドバビルド - release Android
  2. android-release-unsigned.apkファイルの場所(PROJECT\platform\Android\build\outputs\apk)に移動します。
  3. jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore < キーストアファイルのパス > < Android UNSIGNED APK NAME > < キーストアエイリアス >
  4. < Pipal Of zipalign.exe > -v 4 < Android UNSIGNED APK NAME > < Android RELEASE APK NAME >
0
Om Shankar