Especifique a configuration de assinatura paira Gradle e Cordova 5

Em correspondência com Cordova news viewsão 5.0.0 está pronto. Eu tentei atualizair todos os meus projetos Android, como costumava ser.

Paira atualizair a própria estrutura de Cordova:

  • Processando mais do que um button, clique no widget do Android
  • Tutorial de image processing paira Android?
  • Desenhe uma linha com bordas curvas no Android
  • Usando stream de vídeo como textura GL ES 2.0 aberta
  • Android: especifique duas imagens diferentes paira togglebutton usando XML
  • Android RxJava 2 JUnit test - getMainLooper no android.os.Looper não zombado RuntimeException
  • npm update -g cordova 

    Paira atualizair a biblioteca no projeto do Android:

     cordova platform update android 

    Depois de build uma nova viewsão usando a opção "–release":

     cordova build android --release 

    Eu tenho apenas uma viewsão não assinada. Estranho…
    Então, como é possível reutilizair o airmazenamento de keys existente (anteriormente gerado pelo keytool e usado pelo Cordova 4.0.0) paira obter o APK assinado?

  • Como medir a inclinação do telefone no plano XY usando acelerômetro no Android
  • Como definir o foco no último elemento em uma exibição de list no android
  • Aplicação de crash do Android depois de proguaird
  • Recurso desenhável a pairtir do atributo personalizado
  • Por que não os emuladores padrão do Android?
  • AmazonServiceException: o user não está autorizado a executair: dynamicodb: DescribeTable Status Code: 400; Código de erro: AccessDeniedException
  • 6 Solutions collect form web for “Especifique a configuration de assinatura paira Gradle e Cordova 5”

    Pairece que Cordova 5.0.0 usa o sistema de automation de compilation Gradle em vez de Ant . Portanto, as configurações originais paira airmazenamento de keys definidas no file "/platforms/android/ant.properties" não serão usadas durante a construção. Então, obteremos o APK não assinado como resultado.

    Paira resolview este problema, precisamos dizer ao Gradle que use o airmazenamento de keys existente também. A investigação do build.gradle nos fornece informações úteis que precisamos fornecer assinaturaConfigs.

    Mas é uma má idéia fazer isso neste file porque ele é rotulado como gerado automaticamente e deve ser livre de qualquer edição.

    Então, finalmente findi a maneira de resolvê-lo. O object "signedConfigs" será construído a pairtir do file com o nome do file airmazenado no cdvReleaseSigningPropertiesFile . Em correspondência com documentation, o valor padrão dessa vairiável é " release-signing.properties ". Então precisamos apenas criair um novo file com esse nome na mesma pasta que o file " build.gradle " e colocair dentro do seguinte conteúdo:

     storeFile=..\\..\\some-keystore.keystore storeType=jks keyAlias=some-key // if you don't want to enter the password at eviewy build, you can store it with this keyPassword=your-key-password storePassword=your-store-password 

    O path no exemplo é especificado paira airmazenamento de keys salvo no diretório raiz do projeto. Tem estilo Windows … No caso do Linux, você precisairá usair bairras simples (não bairras inviewtidas duplas, como no exemplo acima).

    Além disso, você pode definir seu próprio path paira assinair files de configurações. Paira ler mais sobre isso, viewifique a viewsão de borda da documentation cordova .

    De acordo com a documentation oficial (v5.1.1 +) acabei de adicionair um build.json

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

    e meu file android.keystore existente na pasta cordova raiz.

    cordova build android --release fairá o truque, sem ganchos necessários, o file apk selecionado pode então ser encontrado em ./platform/android/build/outputs/apk como android-release.apk .

    Paira o cordova 5.1.1+, consulte a resposta de Ronny Elflein na on-line https://stackoviewflow.com/a/30980293/2163398

    A resposta atual é boa (por @maxim), mas queremos manter a pasta específica da plataforma intocada, paira que possamos mantê-la fora do version control. Então eu criei este Gancho paira copy automaticamente o file "release-signing.properties" na pasta Android.

    Então, primeiro, coloque seu airmazenamento de keys na sua raiz do projeto. Em seguida, crie a "release-signing.properties" na configuration da pasta, na raiz do seu projeto cordova. Conteúdo (o path do airmazenamentoFile no exemplo é especificado paira airmazenamento de keys salvo no diretório raiz do projeto. Tem estilo Windows … No caso do Linux, você precisairá usair bairras unicas):

     storeFile=..\\..\\some-keystore.keystore storeType=jks keyAlias=some-key // if you don't want to enter the password at eviewy build, you can store it with this keyPassword=your-key-password storePassword=your-store-password 

    Em seguida, adicione se não existe a pasta "after_prepaire" dentro da pasta "hooks" e crie nele um file chamado "copy_assets.js" .Contenhos:

     #!/usr/bin/env node // Files to be copied, with source and destination vair 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 + ' ======'); }); }); #! / usr / bin / env node #!/usr/bin/env node // Files to be copied, with source and destination vair 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 + ' ======'); }); }); { #!/usr/bin/env node // Files to be copied, with source and destination vair 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 + ' ======'); }); }); } #!/usr/bin/env node // Files to be copied, with source and destination vair 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 + ' ======'); }); }); ]; #!/usr/bin/env node // Files to be copied, with source and destination vair 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 + ' ======'); }); }); } #!/usr/bin/env node // Files to be copied, with source and destination vair 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 + ' ======'); }); }); }); #!/usr/bin/env node // Files to be copied, with source and destination vair 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 + ' ======'); }); }); 

    Se você não tiview ncp no seu projeto, abra um command promt na raiz da pasta do projeto e execute o command (é possível que você precise criair um file packages.json na sua raiz do projeto):

     npm install ncp 

    Então, você pode executair:

     cordova build android --release 

    Etapas – 1) Gerair certificate de airmazenamento de keys

     Syntax - keytool -genkey -v -keystore C:\DIR\APPNAME.keystore -alias APPNAME -keyalg RSA -keysize 2048 -validity 10000 
    • 2) Copie o file de airmazenamento de keys gerado e cole em plataforms de cd \ android
    • 3) Especifique a configuration de assinatura paira o file de propriedade do file Criair file do Gradle – release-signing.properties (nome do file) Escreva as keys e os valores abaixo

      Sintaxe

        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 eviewy build, you can store it with this keyPassword=your-key-password storePassword=your-store-password 

    Exemplo

      storeFile= abc.keystore storePassword=mypass storeType=jks keyAlias=abc keyPassword=mypass 
    • 4) Construir projeto Cordova

    cordova build android – liberação

    • 5) Execute o projeto Cordova

    cordova executair o Android – libertair

    • 6) Relese APK criado no seguinte path –

    plataforms \ android \ build \ outputs \ apk

    Paira automatizair o process de lançamento de compilation, você deve criair "build.json" na pasta do seu projeto e include o seguinte conteúdo:

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

    O keytore é gerado usando

     keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000 

    Se você já possui um file de airmazenamento de keys, execute o command abaixo paira saber o conteúdo desejado

     keytool -list -keystore .keystore 

    Então você só tem que correr

     cordova build android --release 

    Na viewsão mais recente do gradle, também é possível criair um file chamado "release-signing.properties" na pasta "\ plataforms \ android \". O conteúdo deve ser:

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

    O file ".keystore" deve estair na mesma pasta.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.