Укажите конфигурацию подписи для Gradle и Cordova 5

В соответствии с новостями Кордовы версия 5.0.0 готова. Я попытался обновить все мои Android-проекты, как обычно.

Чтобы обновить структуру Кордовы:

npm update -g cordova 

Чтобы обновить библиотеку в Android-проекте:

 cordova platform update android 

После создания новой версии с использованием опции «–release»:

 cordova build android --release 

Я получил только неподписанную версию. Странный…
Итак, как можно повторно использовать существующее хранилище ключей (ранее созданное keytool и используемое Cordova 4.0.0), чтобы получить подписанный APK?

Solutions Collecting From Web of "Укажите конфигурацию подписи для Gradle и Cordova 5"

Похоже, что Cordova 5.0.0 использует систему автоматизации сборки Gradle вместо Ant . Поэтому исходные настройки для хранилища ключей, определенные в файле «/platforms/android/ant.properties», не будут использоваться во время строительства. В результате мы получим unsigned APK.

Чтобы решить эту проблему, нам нужно сказать, что Gradle также использует существующее хранилище ключей. Исследование build.gradle дает нам полезную информацию, необходимую нам для обеспечения подписи.

Но это плохая идея сделать это в этом файле, потому что она помечена как автоматически сгенерированная, и она не должна содержать никаких изменений.

Поэтому, наконец, я нашел способ решить эту проблему. Объект «signConfigs» будет создан из файла с именем файла, хранящегося в 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 вам нужно будет использовать одиночные косые черты (а не двойные обратные черты, как в приведенном выше примере).

Кроме того, вы можете установить свой собственный путь для подписания файла настроек. Чтобы узнать больше об этом, проверьте кросс- версию документации cordova .

Согласно официальной документации (v5.1.1 +), я только что добавил build.json

 { "android": { "release": { "keystore": "android.keystore", "storePassword": "storepassword", "alias": "mykey", "password" : "password", "keystoreType": "" } } } 

И мой существующий файл android.keystore в корневой папке кордовы.

cordova build android --release сделают трюк, никаких перехватчиков не потребуется, один файл apk может быть найден в ./platform/android/build/outputs/apk как android-release.apk .

Для кордовы 5.1.1+ обратитесь к Ronny Elflein r11lein answer https://stackoverflow.com/a/30980293/2163398

Текущий ответ хорош (by @maxim), но мы хотим сохранить незаменимую папку для платформы, поэтому мы можем сохранить ее вне контроля версий. Поэтому я создал этот Hook для автоматической копирования файла «release-signing.properties» в папку android.

Итак, во-первых, поместите свое хранилище ключей в свой корень проекта. Затем создайте «release-signing.properties» в конфиге папки, в корне вашего проекта cordova. Содержание (путь 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 

Затем добавьте, если не существует папка «after_prepare» внутри папки «hooks», а в ней есть файл под названием «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 в своем проекте, откройте команду promt в корне папки проекта и запустите команду (возможно, вам нужно создать файл aa packages.json в корне вашего проекта):

 npm install ncp 

Затем вы можете запустить:

 cordova build android --release 

Шаги – 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

Кордоба построить андроид – освободить

  • 5) Запустить проект «Кордова»

Кордоба работает андроид – освобождение

  • 6) Relese APK, созданный по следующему пути –

платформы \ Android \ сборка \ выходы \ APK

Чтобы автоматизировать процесс создания сборки, вы должны создать «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 

В последней версии gradle также можно создать файл с именем «release-signing.properties» в папке «\ platform \ android». Содержимое должно быть:

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

Файл «.keystore» должен находиться в одной папке.