Crie apk versão Android no Phonegap 3.x CLI

108

Como posso construir um aplicativo Android localmente usando a CLI Phonegap 3.x, pronto para lançar? Eu verifico a pasta bin gerada dentro do diretório plataformas / android do projeto e só contém APKs .debug.

A propósito, eu uso este comando: phonegap local build android

Guillermo Gutiérrez
fonte

Respostas:

153

Isso é para Phonegap 3.0.x a 3.3.x. Para PhoneGap 3.4.0 e superior, veja abaixo .

Parte da resposta encontrada aqui , na documentação do Phonegap. O processo completo é o seguinte:

  1. Abra uma janela de linha de comando e vá para / caminho / para / seu / projeto / plataformas / android / cordova .

  2. Corra build --release. Isso cria um APK de versão não assinado em / caminho / para / seu / projeto / plataformas / pasta android / bin , chamado YourAppName-release-unsigned.apk.

  3. Assine e alinhe o APK usando as instruções nos documentos oficiais do desenvolvedor Android .

Agradecimentos a @LaurieClark pelo link ( http://iphonedevlog.wordpress.com/2013/08/16/using-phonegap-3-0-cli-on-mac-osx-10-to-build-ios-and- android-projects / ), e o blogueiro que postou, porque me colocou no caminho certo.

Guillermo Gutiérrez
fonte
9
Tive que modificar manualmente meu arquivo AndroidManifest.xml onde <application android:debuggable="true"...eu precisava mudar para<application android:debuggable="false"
Ian Jamieson
3
Você também tem que fazer um zip alinhar a coisa depois: zipalign -v 4 your-unaligned.apk your-align.apk
Damian
13
Estou executando o Cordova 3.4.1-0.1.0 e o arquivo foi criado em/path/to/your/project/platforms/android/ant-build
AlexStack
1
Parece que, sendo específico, isso é para phonegap 3.0.x a 3.3.x, a partir de 3.4.x em diante isso pode variar.
Guillermo Gutiérrez
Muito obrigado guillermo. +1
Quick_Silver
112

No PhoneGap 3.4.0 você pode ligar para:

cordova build android --release

Se você configurou o arquivo 'ant.properties' no diretório 'plataformas / android' como o seguinte:

key.store=/Path/to/KeyStore/myapp-release-key.keystore
key.alias=myapp

Em seguida, será solicitada a senha do keystore e o arquivo de saída (myapp-release.apk) termina no diretório 'platform / android / ant-build' já assinado e alinhado e pronto para implantar.

Steven Anderson
fonte
1
A versão 3.4.0 atual do Cordova não inclui um arquivo de 'propriedades da formiga'.
SteAp
8
Criado ant.propertiesem platforms/androide caiu apenas essas duas propriedades para ele. Funciona perfeitamente, obrigado!
Adam Tuttle
6
Se você não tiver certeza sobre o keystore / alias ou como criá-los, os detalhes completos estão em developer.android.com/tools/publishing/app-signing.html
Shai
6
Observe também que você pode especificar as propriedades key.store.password e key.alias.password neste arquivo, portanto, você não terá que inseri-lo cada vez que criar a versão. Claro, seja cauteloso e não envie este arquivo para o sistema de versão.
vbezhenar
5
Para cordova 5.0.0 e superior, crie um build.json na raiz do seu projeto e preencha com {"android": {"release": {"keystore": "/path/to/your.keystore", "alias ":" youalias "}}} em vez do arquivo ant.properties. FYI cordova.apache.org/docs/en/edge/…
artberri
19

In cordova 6.2.0

cd cordova/ #change to root cordova folder
platforms/android/cordova/clean #clean if you want
cordova build android --release -- --keystore="/path/to/keystore" --storePassword=password --alias=alias_name #password will be prompted if you have any

Resposta anterior:

De acordo com cordova 5.0.0

{
     "android": {
         "release": {
             "keystore": "app-release-key.keystore",
             "alias": "alias_name"
         }
     }
 }

e executar a ./build --release --buildConfig build.jsonpartir do diretórioplatforms/android/cordova/

a localização do arquivo de armazenamento de chave é relativa a platforms/android/cordova/, portanto, no .keystorearquivo de configuração acima e build.jsonestão no mesmo diretório.

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

KrIsHnA
fonte
15

Seguindo até @ steven-anderson, você também pode configurar senhas dentro do ant.properties, para que o processo possa ser totalmente automatizado

então, se você colocar em platform \ android \ ant.properties o seguinte

key.store=../../yourCertificate.jks
key.store.password=notSoSecretPassword
key.alias=userAlias
key.alias.password=notSoSecretPassword
Simone Avogadro
fonte
1
No Windows, você deve escapar das barras ... '... key.store = C: \\ OpenSSL-Win32 \\ certs \\ android_key_store.keystore ...'
bkomac
4

só fiquei pensando muito porque tive o mesmo problema, mas na minha instalação o comando "cordova" nunca estava disponível e "phone gap build android --release" apenas ignorou a plataforma / android / ant.properties.

então, olhando dentro do meu filtro de plataforma, encontrei uma pasta chamada "cordova" e dentro dela havia um binário "build" que aceitava o argumento --release, ele me pediu os chaveiros e terminei com um assinado e pronto para produção APK.

isso nunca foi documentado em nenhuma parte do site de falha de telefone e, francamente, agora eu meio que odeio o fone de ouvido :( era para tornar as coisas mais fáceis, mas tudo era apenas complicado :(

Freaktor
fonte
2

Criação do aplicativo PhoneGap Android para implantação na Google Play Store

Essas etapas funcionariam para Cordova, PhoneGap ou Ionic. A única diferença seria, onde quer que uma chamada cordovaseja feita, substitua por phonegapou ionic, para o seu cenário específico.

Depois de concluir o desenvolvimento e estiver pronto para implantar, siga estas etapas:

  1. Abra uma janela de linha de comando (Terminal no macOS e Linux OU Prompt de comando no Windows).

  2. Vá até o / caminho / para / seu / projeto /, que chamaríamos de raiz do projeto.

  3. Enquanto estiver na raiz do projeto, remova o plug-in "Console" do seu conjunto de plug-ins.

    O comando é:cordova plugin rm cordova-plugin-console

  4. Ainda na raiz do projeto, use o comando cordova build para criar um APK para distribuição de lançamento.

    O comando é:cordova build --release android

  5. O processo acima cria um arquivo chamado android-release-unsigned.apkna pastaProjectRoot/platforms/android/build/outputs/apk/

  6. Assine e alinhe o APK usando as instruções em https://developer.android.com/studio/publish/app-signing.html#signing-manually

    No final desta etapa, o APK que você obteve pode ser enviado para a Play Store .

Observação: como novato ou iniciante, a última etapa pode ser um pouco confusa para mim. Alguém pode ter alguns problemas e pode ter algumas perguntas sobre o que são esses comandos e onde encontrá-los.

T1. O que são jarsigner e keytool ?
Resposta: As instruções do Android App Signing dizem especificamente sobre o que jarsigner e keytool são, MAS não dizem onde encontrá-los se você encontrar um 'erro de comando não encontrado' na janela da linha de comando.

Portanto, se você tiver o Java Development Kit (JDK) adicionado à sua variável PATH , basta executar os comandos como no Guia. MAS, se você não os tiver em seu PATH, você sempre pode acessá-los da pasta bin da instalação do JDK.

2º trimestre. Onde está zipalign ?
Resposta: Existe uma grande probabilidade de não encontrar o comando zipalign e receber o 'erro de comando não encontrado'. Você provavelmente estaria pesquisando zipalign no Google e onde encontrá-lo?

O utilitário zipalign está presente na pasta de instalação do Android SDK. No macOS, o local padrão é user-name/Library/Android/sdk/,. Se você cabeça para a pasta que você iria encontrar um monte de outras pastas, como docs, platform-tools, build-tools, tools, add-ons...

Abra a build-toolspasta. cd build-tools. Aqui, haveria uma série de pastas que são versionadas de acordo com a cadeia de ferramentas de construção que você está usando no Android SDK Manager. ZipAlignestá disponível em cada uma dessas pastas. Eu, pessoalmente, escolho a pasta com a versão mais recente. Abra qualquer.

No macOS ou Linux, pode ser necessário usar em./zipalignem vez de simplesmente digitar zipalignconforme a documentação menciona. No Windows, zipaligné bom o suficiente.

Incorelabs
fonte
1

Eu fiz isso funcionar copiando e colando o aplicativo assinado no mesmo diretório que o zipalign. Parece que o aapt.exe não conseguiu encontrar o arquivo de origem, mesmo com o caminho fornecido. ou seja, isso não funcionou zipalign -f -v 4 C: ... \ CordovaApp-release-unsigned.apk C: ... \ destination.apk atingiu aapt.exeCordovaApp-release-unsigned.apk, congelou e ao clicar em return 'aapt.exeCordovaApp-release-unsigned.apk' não é reconhecido como um comando interno ou externo, programa operável ou arquivo em lote. E isso fez zipalign -f -v 4 CordovaApp-release-unsigned.apk myappname.apk

robert deveau
fonte
Obrigado pela dica. Você também pode incluir o caminho para a pasta zipalign na variável de ambiente PATH.
Guillermo Gutiérrez
0

Eu sei que esta pergunta é sobre o Phonegap 3.X especificamente, mas apenas para referência, qualquer versão do Phonegap acima da 4.0.0 usa Gradle em vez do Ant para construir por padrão. Para usar o Ant em vez do Gradle, você pode adicioná-lo ao seu config.xml:

<preference name="android-build-tool" value="ant" />

Ao usar o Gradle, as informações de assinatura do keystore agora precisam ir para um novo local ( conforme descrito nesta postagem ). Crie um novo arquivo chamado ' release-signing.properties ' na mesma pasta do arquivo "build.gradle" e coloque dentro do seguinte conteúdo:

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
Julian
fonte
-7

Você pode tentar este comando, ele deve construir e executar o aplicativo (então .apk deve ser criado):

phonegap local run android

Laurie Clark
fonte
3
Ele ainda cria apenas os APKs de depuração.
Guillermo Gutiérrez
2
Não, ele apenas cria APKs assinados para depuração, não libera APKs.
Guillermo Gutiérrez
1
Encontre a solução aqui (3/4 abaixo: "Finalizar apk para Google Play Upload"): iphonedevlog.wordpress.com/2013/08/16/…
Laurie Clark