[解決済み] Cordova のコマンドラインインターフェイスを使用して署名された APK ファイルを作成するにはどうすればよいですか?
質問
という名前のサンプルアプリケーションを作りました。
checkStatus
. さて、私は署名されたAPKファイルを作成したいと思います。だから私は私のテストのために異なるデバイスにそれをインストールすることができます。
そのために、ググってみたら、こんなのがありました。 ドキュメンテーション .
ドキュメントの通り、プロジェクトディレクトリに切り替えて、以下のコマンドを実行しました。
keytool -genkey -v -keystore key-name.keystore -alias alias-name -keyalg RSA -keysize 2048 -validity 10000
上記のコマンドを実行したところ、「Security」という名前のファイルができました。
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:
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: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 属性を削除するのが最善です。 そうすると、ツールは自動的に 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ストアでリリースすることができます。
関連
-
Androidのadbデバイスがオフラインであることが判明
-
android.os の NetworkOnMainThreadException。
-
プログラム "git.exe "を実行できない場合の正しい解決方法です。CreateProcessエラー=2
-
AndroidがMainActivityが包含クラスでないというエラーを報告する
-
アンドロイドプロジェクトのパッケージングにgradleを使用する際の問題点
-
android:EMSのプロパティ
-
アプリはGoogle検索でインデックスされません Androidmanifestのクソみたいな黄色い警告
-
Android ProgressBarの色を変更する
-
Android--shape--描画のコーナー、グラデーション、パディング、サイズ、ソリッド、ストロークのプロパティを指定する。
-
[解決済み】Gradleを使用してリリース署名付きapkファイルを作成する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
AAPT2エラーについて:詳しくはログをご確認ください。
-
android.os の NetworkOnMainThreadException。
-
アプリはGoogle検索でインデックスされません Androidmanifestのクソみたいな黄色い警告
-
エラーが発生しました。ArrayAdapter は、リソース ID が TextView である必要があります。
-
Error:A problem occurred configuring project ':app'. > ビルドを見つけられませんでした。
-
repo: コマンドが見つかりません
-
Android ProgressBarの色を変更する
-
Android基本アプレット
-
SpinnerのOnItemSelectedListenerのonItemSelectedメソッドの4つのパラメーターの意味
-
android studioが新しいプロジェクトを作成しますが、プロジェクトの同期に成功するまでデザインエディタが使用できません。