web-dev-qa-db-ja.com

GradleおよびCordova 5の署名構成を指定する

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を取得する方法を教えてください。

26
Maxim

Cordova 5.0.0Gradleの代わりに自動化システムを使用するように見えます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 を確認してください。

50
Maxim

公式ドキュメント (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として。

44

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
8

ビルドリリースプロセスを自動化するには、プロジェクトのフォルダーに「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
3
Filipe Pinto

手順-1)キーストア証明書を生成する

Syntax -  keytool -genkey -v -keystore C:\DIR\APPNAME.keystore -alias APPNAME -keyalg RSA -keysize 2048 -validity 10000
  • 2)生成されたキーストアファイルをコピーして、cd platform\Androidに貼り付けます
  • 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
  • 4)Cordovaプロジェクトをビルドする

cordova build Android --release

  • 5)cordovaプロジェクトを実行する

cordova run Android --release

  • 6)次のパスで作成されたリリースAPK-

platform\Android\build\outputs\apk

2
Ravi

最新のgradleバージョンでは、「releases-signing.properties」という名前のファイルを「\ platforms\Android \」フォルダーに作成することもできます。内容は次のとおりです。

storeFile=<your key>.keystore
storeType=jks
keyAlias=<your_alias>
keyPassword=<your_passwd>
storePassword=<your_passwd>

ファイル「.keystore」は同じフォルダーにある必要があります。

1
Filipe Pinto