└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # Assinando Aplicativo Apache Cordova 2 | 3 | Tutorial de criação e asssinatura de um aplicativo pelo terminal com Apache Cordova para fazer upload na PlayStore. 4 | 5 | ## Como utilizar 6 | 7 | ### Crie um novo projeto Cordova: 8 | 9 | cordova create appassinado br.com.appassinado AppAssinado 10 | 11 | ### Entre no diretório do projeto: 12 | 13 | cd appassinado 14 | 15 | ### Instale a plataforma Android: 16 | 17 | cordova platform add android 18 | 19 | ### Execute seu código usando a flag --release para gerar o apk: 20 | 21 | cordova build android --release 22 | 23 | ### Proximo passo vamos gerar a chave: 24 | 25 | #### Sintaxe padrão: 26 | 27 | keytool -genkey -v -keystore .keystore -alias -keyalg -keysize -validity 28 | 29 | ### No exemplo que utilizamos ficaria assim: 30 | 31 | keytool -genkey -v -keystore appassinado.keystore -alias appassinado -keyalg RSA -keysize 2048 -validity 10000 32 | 33 | ### Em seguida será requisitado algumas informações: 34 | 35 | keystore password? : xxxxxxx 36 | What is your first and last name? : xxxxxx 37 | What is the name of your organizational unit? : xxxxxxxx 38 | What is the name of your organization? : xxxxxxxxx 39 | What is the name of your City or Locality? : xxxxxxx 40 | What is the name of your State or Province? : xxxxx 41 | What is the two-letter country code for this unit? : xxx 42 | 43 | ### Exemplo da saída quando gerada a chave (Usando as informações que foram requisitadas acima) 44 | 45 | Informe a senha da área de armazenamento de chaves: xxxxxxxxx 46 | Informe novamente a nova senha: xxxxxxxxx 47 | Qual é o seu nome e o seu sobrenome? 48 | [Unknown]: App Assinado 49 | Qual é o nome da sua unidade organizacional? 50 | [Unknown]: App Assinado 51 | Qual é o nome da sua empresa? 52 | [Unknown]: App Assinado 53 | Qual é o nome da sua Cidade ou Localidade? 54 | [Unknown]: Ponta Grossa 55 | Qual é o nome do seu Estado ou Município? 56 | [Unknown]: Parana 57 | Quais são as duas letras do código do país desta unidade? 58 | [Unknown]: BR 59 | CN=App Assinado, OU=App Assinado, O=App Assinado, L=Pont Grossa, ST=Parana, C=BR Está correto? 60 | [não]: sim 61 | 62 | Gerando o par de chaves RSA de 2.048 bit e o certificado autoassinado (SHA256withRSA) com uma validade de 10.000 dias 63 | para: CN=App Assinado, OU=App Assinado, O=App Assinado, L=Ponta Grossa, ST=Parana, C=BR 64 | Informar a senha da chave de 65 | (RETURN se for igual à senha da área do armazenamento de chaves): xxxxxxxxx 66 | Informe novamente a nova senha: xxxxxxxxx 67 | [Armazenando appassinado.keystore] 68 | 69 | ### Depois de gerada a chave, vamos assinar o apk com a ferramenta jarsigner utilizando esta chave: 70 | 71 | #### Sintaxe padrão: 72 | 73 | jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 74 | 75 | ### No exemplo que utilizamos ficaria assim: 76 | 77 | jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore appassinado.keystore platforms/android/build/outputs/apk/android-release-unsigned.apk appassinado 78 | 79 | ### Vai pedir a senha da assinatura: 80 | 81 | Enter KeyPhrase as 'xxxxxxxx' 82 | 83 | ### Finalmente vamos gerar o apk assinado utilizando a ferramenta zipalign do seu sdk: 84 | 85 | /seu-caminho-para-o-zipalign/zipalign -v 4 /seu-caminho-para-o-apk-nao-assinado/android-release-unsigned.apk /seu-caminho-de-saida-para-o-apk-assinado/appassinado.apk 86 | 87 | ### Seu apk está pronto para ser colocado na PlayStore 88 | 89 | --- 90 | 91 | ## Opcional: 92 | 93 | ### Podemos especificar um build.json com o armazenamento das chaves para rodar o debug e release mais facilmente 94 | 95 | > Alternativamente, você pode especificá-los em um arquivo de configuração de compilação (build.json) Usando o argumento --buildConfig para os mesmos comandos. Aqui está um exemplo de um arquivo de configuração que deve ser adicionado em seu projeto, eu particularmente adicionei dentro da minha pasta js. 96 | 97 | ```javascript 98 | { 99 | "android": { 100 | "debug": { 101 | "keystore": "../../appassinado.keystore", 102 | "storePassword": "123456789", 103 | "alias": "appassinado", 104 | "password": "123456789", 105 | "keystoreType": "" 106 | }, 107 | "release": { 108 | "keystore": "../../appassinado.keystore", 109 | "storePassword": "123456789", 110 | "alias": "appassinado", 111 | "password": "123456789", 112 | "keystoreType": "" 113 | } 114 | } 115 | } 116 | 117 | ``` 118 | ### Execute o comando abaixo com a flag --release ou --debug para ler a configuração e gerar o apk: 119 | 120 | cordova build android --release --buildConfig 121 | 122 | ou 123 | 124 | cordova build android --debug --buildConfig 125 | 126 | Para mais informações de como configurar a assinatura do app em [Apache Cordova - Assinando um aplicativo](http://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html#signing-an-app) 127 | 128 | 129 | ## Mais Informações 130 | 131 | Para mais informações de como configurar o Apache Cordova acesse a documentação [Documentação Apache Cordova](http://cordova.apache.org/docs/en/latest/guide/cli/index.html) 132 | 133 | 134 | --------------------------------------------------------------------------------