Compilar apps Android
O PocketCode compila um projeto Android escrito em Kotlin para um APK ou um AAB no seu celular. Não há Gradle nem servidor. O botão é gratuito e exige a versão 1.1.0 do app ou posterior, Android 9 ou mais recente e um processador de 64 bits.
O que faz
Abra um projeto Android e toque em Compilar APK, o ícone do Android na barra do editor. O botão só aparece em projetos Android: os que têm app/build.gradle.kts e o plugin com.android.application. Na paleta ele é descrito assim: compila este projeto Android em um APK no seu celular.
Você pode
- Compilar um APK de depuração para testar no celular, assinado com uma chave de depuração.
- Compilar um APK de release, otimizado e assinado com a sua própria chave, para distribuir fora do Google Play.
- Compilar um Pacote de release (AAB), o formato que o Google Play exige.
- Usar bibliotecas Maven do Google Maven e do Maven Central, com catálogos
libs.versions.toml. Elas são baixadas na primeira compilação e ficam no celular. - Sair do app enquanto compila. Uma notificação mostra que a compilação está em andamento.
- Abrir o mesmo projeto no Android Studio: os modelos são projetos Gradle padrão.
Você não pode, e por quê
- Compilar arquivos
.java. Eles aparecem como Ainda não suportado no celular.Ainda não - Ler um
build.gradleem Groovy. Só funciona o DSL do Kotlin,build.gradle.kts.Ainda não - Instalar o APK de dentro do PocketCode. Quem instala é o Android, a partir do app Arquivos.De propósito
- Instalar um AAB em um celular. Ele serve apenas para o Google Play Console.De propósito
Criar um projeto Android
Abra Projetos e toque em Novo para chegar a Novo projeto. Há dois modelos Android. Os dois são projetos Gradle padrão, então também abrem no Android Studio.
| Modelo | O que você recebe |
|---|---|
| Android App (Activity) | Um app Android em Kotlin que compila um APK no seu celular. |
| Android App (Compose) | O mesmo, com Jetpack Compose. |
release com isMinifyEnabled = false e o arquivo proguard-rules.pro já ligado. Veja a seção do R8 para ativar a redução.Compilar um APK de depuração
Um APK de depuração é o jeito rápido de testar o app no celular. Toque em Compilar APK, escolha APK de depuração na folha Compilar o app e toque em Compilar.
- 1Verificar o projeto — lê os arquivos do Gradle e a estrutura do projeto.
- 2Baixar bibliotecas — só na primeira vez, depois ficam no celular.
- 3Recursos — prepara os recursos do app.
- 4Compilar Kotlin — compila o seu código.
- 5Preparar bibliotecas para Android — só na primeira vez, depois ficam salvas.
- 6Empacotar — monta o APK.
- 7Assinar — assina com a chave de depuração.
A folha mostra esses passos enquanto eles rodam, com Ver registro e Cancelar. A primeira compilação demora mais, e a folha avisa. Se você cancelar, nada fica pela metade: o cache e o APK só são gravados inteiros.
A primeira compilação
- As ferramentas do Kotlin (kotlinc e d8) não vêm dentro do app. O Google Play as baixa uma vez, cerca de 119 MB, na primeira vez que você compila um APK ou executa um arquivo
.kt. Você verá Preparando as ferramentas de compilação e Baixando do Google Play: X de Y. Só na primeira vez. - Com dados móveis, o Google Play pode pedir permissão antes: O Google Play precisa da sua permissão para baixá-las. Toque em Continuar o download.
- As ferramentas precisam do app instalado pelo Google Play.
- Se você executar um
.ktantes de as ferramentas estarem lá, o executor de Kotlin mostra um cartão Ferramentas do Kotlin: baixadas uma vez do Google Play, cerca de 119 MB. Toque em Baixar (~119 MB). Quando terminar, o seu arquivo é executado de novo sozinho.
Quanto tempo leva
- Em um Galaxy S24, a primeira compilação de depuração do modelo Compose levou 1 min 25 s, incluindo o download das ferramentas. O APK tinha 7,8 MB.
- Em um Galaxy S24, um hello world em Kotlin com as ferramentas já instaladas rodou em menos de 1 s (266 ms).
- Outros celulares serão mais rápidos ou mais lentos. São medições, não uma promessa.
Instalar o APK
Quando a compilação termina, a folha mostra APK pronto com o tempo, o tamanho e a chave usada.
- 1Toque em Salvar em Downloads. O arquivo vai para
Downloads/PocketCode/<Projeto>-debug.apk. Nas outras compilações o nome termina em-release.apkou-release.aab. - 2Ou toque em Compartilhar… para enviá-lo a outro app. No Android 9 não dá para salvar em Downloads a partir desta tela: use Compartilhar….
- 3Abra o arquivo no app Arquivos. Na primeira vez, o Android pede permissão para instalar apps de origem desconhecida. Permita e instale.
APK de release e AAB
Escolha o tipo na folha Compilar o app. As compilações de release precisam de uma chave de release. Sem ela, a folha diz: você ainda não tem uma chave de release. Crie uma ou importe a que já usa. Compilar fica desativado até você adicionar uma.
| Opção | Para que serve |
|---|---|
| APK de depuração | Para testar no seu celular. Assinado com uma chave de depuração. |
| APK de release | Otimizado e assinado com a sua própria chave, para distribuir fora do Google Play. |
| Pacote de release (AAB) | O formato que o Google Play exige. Não pode ser instalado em um celular. |
Depois de compilar
- O APK de release é salvo como
<Projeto>-release.apk. - Com um AAB, a folha diz: envie este arquivo no Google Play Console. Um pacote não pode ser instalado diretamente em um celular.
- Em um Galaxy S24, a compilação de release do modelo Compose levou 44 s com o R8 e o APK tinha 1,2 MB.
Chaves de release
Uma chave de release assina o seu app. Para gerenciar chaves, toque em Compilar APK, escolha um build de release (APK ou AAB) e toque em Gerenciar chaves no quadro da chave de assinatura. Lá você cria, importa, exporta ou exclui chaves.
Criar uma chave
- Escolha Criar uma chave. Ela gera uma chave RSA de 2048 bits, válida por 30 anos, guardada criptografada no celular, no Android Keystore.
- O alias padrão é
upload. A senha precisa ter 6 caracteres ou mais. - O Google Play não aceita, para um app novo, uma chave que expire antes de 23 de outubro de 2033. O app avisa se a sua expira antes.
Importar uma chave
- Escolha Importar uma chave e selecione um arquivo
.p12ou.pfx. Só funciona PKCS12, o formato padrão do Android Studio e dokeytool. - Um
.jksantigo precisa ser convertido antes:keytool -importkeystore. - Se a senha estiver errada, você verá Senha incorreta.
Gerenciar chaves
| Ação | O que faz |
|---|---|
| Exportar uma cópia… | Salva um .p12 padrão que abre com o keytool ou o Android Studio. Precisa da senha: use Mostrar senha. |
| Mostrar senha | Mostra a senha da chave. |
| Excluir | Remove a chave depois que você confirma: Excluir esta chave? |
.p12 de novo.Reduzir o código com o R8
O R8 reduz e ofusca o código de uma compilação de release. Só funciona se o bloco release de app/build.gradle.kts tiver isMinifyEnabled = true. A folha lembra você disso.
- 1Abra
app/build.gradle.ktse coloqueisMinifyEnabled = truedentro do blocorelease. - 2Compile um APK de release ou um Pacote de release (AAB).
- 3Se o R8 rodou, o resultado diz: o R8 ofuscou o código. Guarde
app/build/outputs/mapping/release/mapping.txt.
- Guarde o
mapping.txt. O Play Console o usa para ler os relatórios de falhas. - Regras do R8 que leem ou gravam arquivos, como
-printmappingou-include, são rejeitadas por segurança. - Com Compose, o R8 precisa de memória: até cerca de 335 MB em um Galaxy S24. Em um celular com pouca memória ele pode falhar.
O que ainda não é suportado
O que a compilação no celular não faz hoje.
- Arquivos
.javaainda não são compilados. Aparecem como Ainda não suportado no celular, com o arquivo e a linha.Ainda não - O
build.gradleem Groovy não é suportado. Usebuild.gradle.kts.Ainda não - O que a compilação não entende aparece como Ainda não suportado no celular. As configurações que não mudam o resultado aparecem como Configuração ignorada.Ainda não
- O R8 pode ficar sem memória em celulares com pouca RAM, principalmente com Compose.Dispositivo
- Regras do R8 que leem ou gravam arquivos são rejeitadas.De propósito
- O PocketCode não instala o APK. Você o abre no app Arquivos.De propósito
- As ferramentas de compilação vêm do Google Play, então o app precisa estar instalado pelo Google Play.Google Play
- A primeira compilação precisa de conexão para baixar as ferramentas e as bibliotecas.Precisa de rede
Limpar o cache de compilação
A compilação guarda bibliotecas e arquivos compilados no celular para que as próximas sejam mais rápidas. Para liberar esse espaço:
- 1Abra Configurações.
- 2Toque em Limpar cache de compilação: libera as bibliotecas e os arquivos compilados guardados para compilar apps Android.
- 3A próxima compilação baixa as bibliotecas de novo.
Solução de problemas
Os problemas comuns e o que fazer.
Não foi possível baixar as ferramentas de compilação do Google Play: sem conexão. Tente de novo quando estiver online.
As ferramentas têm cerca de 119 MB e vêm do Google Play na primeira vez. Conecte-se à internet e compile de novo. Com dados móveis, toque em Continuar o download se o Google Play pedir permissão.
Não há espaço livre suficiente para as ferramentas de compilação.
Libere espaço no celular e compile de novo. Se o cache de compilação estiver grande, Limpar cache de compilação em Configurações o libera.
O Google Play não pode entregar as ferramentas de compilação a esta cópia do PocketCode. É preciso ter o app instalado pelo Google Play.
As ferramentas só chegam pelo Google Play. Instale o PocketCode pelo Google Play, não por um arquivo, e compile de novo.
O Google Play não conseguiu instalar as ferramentas de compilação.
Tente de novo daqui a pouco. Se continuar falhando, confira se o Google Play está atualizado e se há espaço livre para instalar.
Ainda não suportado no celular
A compilação encontrou algo que ainda não sabe fazer, com o arquivo e a linha. Os casos mais comuns são arquivos .java e o build.gradle em Groovy. Passe o código para Kotlin e use build.gradle.kts.
Senha incorreta.
A senha do arquivo .p12 ou .pfx que você está importando não é a certa. Tente de novo com a senha que definiu ao criar a chave.
Minha chave .jks não importa
Só dá para importar PKCS12 (.p12 ou .pfx). Converta o arquivo antigo em um computador com keytool -importkeystore e importe o resultado.
O botão Compilar está desativado
Você escolheu uma compilação de release e ainda não há uma chave de release. Crie uma ou importe a que já usa.
O R8 falha em um celular com pouca memória
O R8 com Compose precisa de memória, até cerca de 335 MB em um Galaxy S24. Feche outros apps e tente de novo. Em um celular com pouca memória ainda pode falhar. Um APK de depuração, ou um release com isMinifyEnabled = false, não usa o R8.
Não consigo salvar em Downloads
No Android 9 não dá para salvar em Downloads a partir da tela do resultado. Use Compartilhar….
O APK não instala
O PocketCode não o instala. Abra o arquivo no app Arquivos e permita instalar de origens desconhecidas quando o Android pedir. Um AAB não pode ser instalado em um celular.
O celular está ficando sem espaço
Use Limpar cache de compilação em Configurações. A próxima compilação baixa as bibliotecas de novo.