Manuals
Manuals




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

Desenvolvimento Android

Dispositivos Android permitem que você execute livremente seus próprios aplicativos neles. É muito fácil construir uma versão do seu jogo e copiá-la para um dispositivo Android. Este manual explica as etapas envolvidas na criação do pacote do seu jogo para Android. Durante o desenvolvimento, executar seu jogo através do aplicativo de desenvolvimento é frequentemente preferível, pois permite recarregar conteúdo e código diretamente no seu dispositivo.

Processo de assinatura Android e Google Play

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 Android application bundle a partir do editor Defold ou da ferramenta de linha de comando, você pode fornecer um keystore (contendo seu certificado e chave) e 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.

Criando um keystore

O processo de assinatura Android no Defold mudou na versão 1.2.173 de usar uma chave e certificado independentes para usar um keystore. Mais informações 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ê.

Criando um application bundle de Android

O editor permite que você crie facilmente um pacote de aplicativo independente para seu jogo. Antes de empacotar (criar um bundle), você pode especificar qual(is) ícone(s) usar para o aplicativo, definir o código de versão etc. no arquivo de configurações do projeto game.project.

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:

image

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:

image

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.

image

Build variants

When you bundle a game, you need to choose what type of engine you wish to use. You have three basic options:

  • Debug
  • Release
  • Headless

These different versions are also referred to as Build variants

When you choose Project ▸ Build you’ll always get the debug version.

Debug

This type of executable is typically used during development of a game as it has several useful debugging features included:

  • Profiler - Used for gathering performance and usage counters. Learn how to use the profiler in the Profiling manual.
  • Logging - The engine will log system information, warnings and errors when logging is enabled. The engine will also output logs from the Lua print() function and from native extensions logging using dmLogInfo(), dmLogError() and so on. Learn how to read these logs in the Game and System Logs manual.
  • Hot reload - Hot-reload is a powerful feature which lets a developer reload resource while the game is running. Learn how to use this in the Hot-Reload manual.
  • Engine services - It is possible to connect to and interact with a debug version of a game through a number of different open TCP ports and services. The services include the hot-reload feature, remote log access and the profiler mentioned above, but also other services to remotely interact with the engine. Learn more about the engine services in the developer documentation.

Release

This variant has the debugging features disabled. This options should be chosen when the game is ready to be released to the app store or in other ways shared with players. It is not recommended to release a game with the debugging features enabled for a number of reasons:

  • The debugging features take up a little bit of size in the binary, and it is a best practice to try to keep the binary size of a released game as small as possible.
  • The debugging features takes a little bit of CPU time as well. This can impact the performance of the game if a user has a low-end hardware. On mobile phones the increased CPU usage will also contribute to heating and battery drain.
  • The debugging features may expose information about the game that is not intended for the eyes of the players, either from a security, cheating or fraud perspective.

Headless

This executable runs without any graphics and sound. It means that you can run the game unit/smoke tests on a CI server, or even have it as a game server in the cloud.

Instalando um application bundle de Android

Instalando um APK

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.

The adb command line tool is an easy to use and versatile program that is used to interact with Android devices. You can download and install adb as part of the Android SDK Platform-Tools, for Mac, Linux or Windows.

Download the Android SDK Platform-Tools from: https://developer.android.com/studio/releases/platform-tools. You find the adb tool in /platform-tools/. Alternatively, platform specific packages can be installed through respective package managers.

On Ubuntu Linux:

$ sudo apt-get install android-tools-adb

On Fedora 18/19:

$ sudo yum install android-tools

On macOS (Homebrew)

$ brew cask install android-platform-tools

You can verify that adb works by connecting your Android device to your computer via USB and issue the following command:

$ adb devices
List of devices attached
31002535c90ef000    device

If your device does not show up, verify that you have enabled USB debugging on the Android device. Open the device Settings and look for Developer options (or Development).

Enable USB debugging

$ adb install Defold\ examples.apk
4826 KB/s (18774344 bytes in 3.798s)
  pkg: /data/local/tmp/my_app.apk
Success

Instalando um APK usando o editor

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:

image

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.

Instalando um AAB

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.

Permissões

A engine Defold requer várias permissões diferentes para que todos os recursos do motor funcionem. As permissões são definidas no AndroidManifest.xml, especificado no arquivo de configurações do projeto game.project. Você pode ler mais sobre permissões Android na documentação oficial. As seguintes permissões são solicitadas no manifesto padrão:

android.permission.INTERNET e android.permission.ACCESS_NETWORK_STATE (Nível de proteção: normal)

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).

android.permission.WAKE_LOCK (Nível de proteção: normal)

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)

Usando AndroidX

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.

image

FAQ

Q: Is it possible to hide the navigation and status bars on Android?

A: Yes, set the immersive_mode setting in the Android section of your game.project file. This lets your app take over the whole screen and capture all touch events on the screen.

Q: Why am I’m getting “Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]” when installing a Defold game on device?

A: Android detects that you try to install the app with a new certificate. When bundling debug builds, each build will be signed with a temporary certificate. Uninstall the old app before installing the new version:

$ 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

Q: Why am I getting errors about conflicting properties in AndroidManifest.xml when building with certain extensions?

A: This can happen when two or more extensions provide an Android Manifest stub containing the same property tag but with different values. This has for instance happened with Firebase and AdMob. The build error looks similar to this:

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. 

You can read more about the issue and the workaround in reported Defold issue #9453 and Google issue #327696048.