Cordovaに対応して news バージョン5.0.0の準備ができました。すべてのAndroidプロジェクトを通常のようにアップグレードしようとしました。
Cordovaフレームワーク自体を更新するには:
npm update -g cordova
Androidプロジェクトでライブラリを更新するには:
cordova platform update Android
「--release」オプションを使用して新しいバージョンをビルドした後:
cordova build Android --release
署名されていないバージョンのみを取得しました。奇妙な...
では、既存のキーストア(以前はkeytoolで生成され、Cordova 4.0.0で使用されていた)を再利用して署名付きAPKを取得する方法を教えてください。
Cordova 5.0.0はGradleの代わりに自動化システムを使用するように見えますAnt。そのため、ファイル「/platforms/Android/ant.properties」で定義されたキーストアの元の設定は、構築中に使用されません。そのため、結果として無署名のAPKを取得します。
この問題を解決するには、Gradleに既存のキーストアも使用するように指示する必要があります。 build.gradleの調査により、signingConfigを提供するために必要な有用な情報が得られます。
しかし、このファイルでは自動生成としてラベル付けされており、編集する必要がないため、このファイルでこれを行うのは悪い考えです。
だから最終的に私はそれを解決する方法を見つけました。オブジェクト「signingConfigs」は、ファイル名がcdvReleaseSigningPropertiesFileに保存されているファイルから作成されます。ドキュメントに対応して、この変数のデフォルト値は「release-signing.properties」です。したがって、「build.gradle」ファイルと同じフォルダーにそのような名前の新しいファイルを作成し、次のコンテンツ内に配置するだけです。
storeFile=..\\..\\some-keystore.keystore
storeType=jks
keyAlias=some-key
// if you don't want to enter the password at every build, you can store it with this
keyPassword=your-key-password
storePassword=your-store-password
例のパスは、プロジェクトルートディレクトリに保存されたキーストアに指定されています。 Windowsスタイルです... Linuxの場合、単一のスラッシュを使用する必要があります(上記の例のような二重のバックスラッシュではありません)。
さらに、署名設定ファイルに独自のパスを設定できます。詳細については、Edgeバージョンの cordova documentation を確認してください。
公式ドキュメント (v5.1.1 +)によると、build.jsonを追加しました
{
"Android": {
"release": {
"keystore": "Android.keystore",
"storePassword": "storepassword",
"alias": "mykey",
"password" : "password",
"keystoreType": ""
}
}
}
ルートCordovaフォルダーにある既存のAndroid.keystoreファイル。
cordova build Android --release
はトリックを行い、フックは不要です。歌われたapkファイルは./ platform/Android/build/outputs/apkAndroid-release.apkとして。
Cordova 5.1.1+については、Ronny Elflein r11lein answer https://stackoverflow.com/a/30980293/2163398を参照してください
現在の答えは(@maximによる)良いものですが、プラットフォーム固有のフォルダーをそのままにしておきたいので、バージョン管理の対象から外すことができます。そこで、このフックを作成して、Androidフォルダー内の "release-signing.properties"ファイルを自動的にコピーします。
そのため、まず、キーストアをプロジェクトルートに配置します。次に、cordovaプロジェクトのルートにあるフォルダーconfigに「release-signing.properties」を作成します。内容(例のstoreFileパスは、プロジェクトルートディレクトリに保存されたキーストアに指定されています。Windowsスタイルです... Linuxの場合は、単一のスラッシュを使用する必要があります):
storeFile=..\\..\\some-keystore.keystore
storeType=jks
keyAlias=some-key
// if you don't want to enter the password at every build, you can store it with this
keyPassword=your-key-password
storePassword=your-store-password
次に、「hooks」フォルダー内に「after_prepare」フォルダーが存在しない場合は追加し、その中に「copy_assets.js」というファイルを作成します。内容:
#!/usr/bin/env node
// Files to be copied, with source and destination
var ncp = require('ncp').ncp,
transfers = [
{
'source': './config/Android/release-signing.properties',
'destination': './platforms/Android/release-signing.properties'
}
];
ncp.limit = 16;
transfers.forEach(function(transfer) {
ncp(transfer.source, transfer.destination, function (err) {
if (err) {
return console.error(err);
}
console.log('====== Assets moved from ' + transfer.source + ' to ' + transfer.destination + ' ======');
});
});
プロジェクトでncpを使用しない場合は、プロジェクトフォルダールートでコマンドプロンプトを開き、コマンドを実行します(プロジェクトルートでpackages.jsonファイルを作成する必要がある場合があります)。
npm install ncp
その後、次を実行できます。
cordova build Android --release
ビルドリリースプロセスを自動化するには、プロジェクトのフォルダーに「build.json」を作成し、次のコンテンツを含める必要があります。
{
"Android": {
"release": {
"keystore": "Android.keystore",
"storePassword": "storepassword",
"alias": "mykey",
"password" : "password",
"keystoreType": ""
}
}
}
Keytoreは次を使用して生成されます
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
既にキーストアファイルがある場合は、以下のコマンドを実行して必要なコンテンツを確認してください
keytool -list -keystore .keystore
その後、あなたはただ実行する必要があります
cordova build Android --release
手順-1)キーストア証明書を生成する
Syntax - keytool -genkey -v -keystore C:\DIR\APPNAME.keystore -alias APPNAME -keyalg RSA -keysize 2048 -validity 10000
3)Gradleの署名構成を指定するファイルプロパティファイルを作成する-release-signing.properties(ファイル名)以下のキーと値を書き込む
構文
storeFile=..\\..\\some-keystore.keystore
storeType=jks (pkcs12 for p12,jks for keystore)
keyAlias=some-key
// if you don't want to enter the password at every build, you can store it with this
keyPassword=your-key-password
storePassword=your-store-password
例
storeFile= abc.keystore
storePassword=mypass
storeType=jks
keyAlias=abc
keyPassword=mypass
cordova build Android --release
cordova run Android --release
platform\Android\build\outputs\apk
最新のgradleバージョンでは、「releases-signing.properties」という名前のファイルを「\ platforms\Android \」フォルダーに作成することもできます。内容は次のとおりです。
storeFile=<your key>.keystore
storeType=jks
keyAlias=<your_alias>
keyPassword=<your_passwd>
storePassword=<your_passwd>
ファイル「.keystore」は同じフォルダーにある必要があります。