This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Dispositivos Android permitem que você execute livremente seus próprios aplicativos neles. É muito fácil criar uma versão do seu jogo e copiá-la para um dispositivo Android. Este manual explica as etapas envolvidas em empacotar seu jogo para Android. Durante o desenvolvimento, executar seu jogo pelo aplicativo de desenvolvimento muitas vezes é preferível, pois permite usar hot reload de conteúdo e código diretamente no seu dispositivo.
O Android exige que todos os APKs sejam assinados digitalmente com um certificado antes de serem instalados em um dispositivo ou atualizados. Se você usar Android App Bundles, precisa assinar apenas seu app bundle antes de enviá-lo para o Play Console, e o Play App Signing cuida do resto. No entanto, você também pode assinar manualmente seu aplicativo para envio para o Google Play, outras lojas de aplicativos e para distribuição fora de qualquer loja.
Quando você cria um pacote de aplicativo Android a partir do editor Defold ou da ferramenta de linha de comando, você pode fornecer um keystore (contendo seu certificado e chave) e a senha do keystore que serão usados ao assinar sua aplicação. Se você não fornecer, o Defold gera um keystore de depuração e o usa ao assinar o pacote de aplicativo.
Você nunca deve enviar sua aplicação para o Google Play se ela foi assinada usando um keystore de depuração. Sempre use um keystore dedicado que você mesmo criou.
O Defold usa um keystore no processo de assinatura Android. Mais informações estão disponíveis neste post do fórum.
Você pode criar um keystore usando o Android Studio ou a partir de um terminal/prompt de comando:
keytool -genkey -v -noprompt -dname "CN=John Smith, OU=Area 51, O=US Air Force, L=Unknown, ST=Nevada, C=US" -keystore mykeystore.keystore -storepass 5Up3r_53cR3t -alias myAlias -keyalg RSA -validity 9125
Isso irá criar um arquivo keystore chamado mykeystore.keystore contendo uma chave e certificado. O acesso à chave e certificado será protegido pela senha 5Up3r_53cR3t. A chave e o certificado serão válidos por 25 anos (9125 dias). A chave e o certificado gerados serão identificados pelo alias myAlias.
Certifique-se de armazenar o keystore e a senha associada em um local seguro. Se você assinar e enviar suas aplicações para o Google Play e o keystore ou a senha do keystore for perdida, não há como atualizar a aplicação no Google Play. Você pode evitar isso usando o Google Play App Signing e deixar o Google assinar suas aplicações para você.
O editor permite criar facilmente um pacote de aplicativo independente para seu jogo. Antes de empacotar, você pode especificar qual(is) ícone(s) usar para o aplicativo, definir o código de versão etc. no arquivo game.project de configurações do projeto.
Para empacotar, selecione Project ▸ Bundle... ▸ Android Application... no menu.
Se você quiser que o editor crie automaticamente certificados de depuração aleatórios, deixe os campos Keystore e Keystore password vazios:

Se você quiser assinar seu bundle com um keystore específico, especifique o Keystore e Keystore password. Espera-se que o Keystore tenha a extensão de arquivo .keystore, enquanto a senha deve ser armazenada em um arquivo de texto com a extensão .txt. Também é possível especificar uma Key password se a chave no keystore usar uma senha diferente do próprio keystore:

O Defold tem suporte à criação de arquivos APK e AAB. Selecione APK ou AAB no menu suspenso Bundle Format.
Pressione Create Bundle quando tiver configurado as definições do pacote de aplicativo. Em seguida, você será solicitado a especificar onde em seu computador o pacote será criado.

Ao empacotar um jogo, você precisa escolher que tipo de engine deseja usar. Você tem três opções básicas:
Essas versões diferentes também são chamadas de Build variants
Ao escolher Project ▸ Build, você sempre obterá a versão de debug.
Este tipo de executável é normalmente usado durante o desenvolvimento de um jogo, pois inclui vários recursos úteis de depuração:
print() e de logs de extensões nativas usando dmLogInfo(), dmLogError() e assim por diante. Aprenda a ler esses logs no manual de logs do jogo e do sistema.Esta variante tem os recursos de depuração desabilitados. Esta opção deve ser escolhida quando o jogo estiver pronto para ser lançado na loja de aplicativos ou compartilhado com jogadores de outras formas. Não é recomendado lançar um jogo com os recursos de depuração habilitados por vários motivos:
Este executável roda sem gráficos nem som. Isso significa que você pode rodar testes unitários/de smoke do jogo em um servidor de CI, ou até usá-lo como servidor de jogo na nuvem.
Um arquivo .apk pode ser copiado para seu dispositivo com a ferramenta adb ou para o Google Play através do console do desenvolvedor do Google Play.
A ferramenta de linha de comando adb é um programa fácil de usar e versátil usado para interagir com dispositivos Android. Você pode baixar e instalar o adb como parte do Android SDK Platform-Tools, para macOS, Linux ou Windows.
Baixe o Android SDK Platform-Tools em: https://developer.android.com/studio/releases/platform-tools. Você encontrará a ferramenta adb em /platform-tools/. Como alternativa, pacotes específicos de plataforma podem ser instalados pelos respectivos gerenciadores de pacotes.
No Ubuntu Linux:
$ sudo apt-get install android-tools-adb
No Fedora 18/19:
$ sudo yum install android-tools
No macOS (Homebrew)
$ brew cask install android-platform-tools
Você pode verificar se o adb funciona conectando seu dispositivo Android ao computador via USB e executando o seguinte comando:
$ adb devices
List of devices attached
31002535c90ef000 device
Se o seu dispositivo não aparecer, verifique se você habilitou USB debugging no dispositivo Android. Abra Settings no dispositivo e procure por Developer options (ou Development).

$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
pkg: /data/local/tmp/my_app.apk
Success
Você pode instalar e iniciar um arquivo .apk usando as caixas de seleção “Install on connected device” e “Launch installed app” no diálogo Bundle do editor:

Para que este recurso funcione, você precisará ter o ADB instalado e a Depuração USB (USB debugging) habilitada no dispositivo conectado. Se o editor não conseguir detectar a localização de instalação da ferramenta de linha de comando ADB, você precisará especificá-la nas Preferências.
Um arquivo .aab pode ser enviado para o Google Play através do console do desenvolvedor do Google Play. Também é possível gerar um arquivo .apk a partir de um arquivo .aab para instalá-lo localmente usando o Android bundletool.
A engine Defold requer várias permissões diferentes para que todos os recursos da engine funcionem. As permissões são definidas no AndroidManifest.xml, especificado no arquivo game.project de configurações do projeto. Você pode ler mais sobre permissões Android na documentação oficial. As seguintes permissões são solicitadas no manifesto padrão:
Permite que aplicativos abram soquetes de rede (network sockets) e acessem informações sobre redes. Essas permissões são necessárias para acesso à internet. (Documentação oficial Android) e (Documentação oficial Android).
Permite usar PowerManager WakeLocks para impedir que o processador entre em modo de suspensão ou que a tela escureça. Esta permissão é necessária para impedir temporariamente que o dispositivo entre em suspensão enquanto recebe uma notificação push. (Documentação oficial Android)
O AndroidX é uma grande melhoria em relação à biblioteca de suporte Android original, que não é mais mantida. Os pacotes AndroidX substituem completamente a Biblioteca de Suporte, fornecendo paridade de recursos e novas bibliotecas. A maioria das extensões Android no Portal de Assets suporta AndroidX. Se você não deseja usar o AndroidX, pode explicitamente desativá-lo em favor da antiga Biblioteca de Suporte Android marcando a opção Use Android Support Lib no manifesto da aplicação.

R: Sim, defina a configuração immersive_mode na seção Android do seu arquivo game.project. Isso permite que seu aplicativo ocupe a tela inteira e capture todos os eventos de toque na tela.
R: O Android detecta que você está tentando instalar o aplicativo com um novo certificado. Ao empacotar builds de debug, cada build será assinada com um certificado temporário. Desinstale o aplicativo antigo antes de instalar a nova versão:
$ adb uninstall com.defold.examples
Success
$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
pkg: /data/local/tmp/Defold examples.apk
Success
R: Isso pode acontecer quando duas ou mais extensões fornecem um stub de Android Manifest que contém a mesma tag de propriedade, mas com valores diferentes. Isso já aconteceu, por exemplo, com Firebase e AdMob. O erro de build se parece com isto:
SEVERE: /tmp/job4531953598647135356/upload/AndroidManifest.xml:32:13-58
Error: Attribute property#android.adservices.AD_SERVICES_CONFIG@resource
value=(@xml/ga_ad_services_config) from AndroidManifest.xml:32:13-58 is also
present at AndroidManifest.xml:92:13-59 value=(@xml/gma_ad_services_config).
Suggestion: add 'tools:replace="android:resource"' to <property> element at
AndroidManifest.xml to override.
Você pode ler mais sobre o problema e a solução alternativa na issue do Defold relatada #9453 e na issue do Google #327696048.