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
Empacotar um jogo para iOS está disponível apenas na versão macOS do Defold Editor.
O iOS exige que qualquer app que você compile e queira executar no seu telefone ou tablet seja assinado com um certificado emitido pela Apple e um perfil de provisionamento. Este manual explica as etapas envolvidas em empacotar seu jogo para iOS. Durante o desenvolvimento, executar seu jogo pelo aplicativo de desenvolvimento costuma ser preferível, pois permite fazer hot reload de conteúdo e código diretamente para o dispositivo.
A segurança associada a apps iOS consiste em vários componentes. Você pode obter acesso às ferramentas necessárias inscrevendo-se no Apple’s iOS Developer Program. Depois de se inscrever, acesse o Apple’s Developer Member Center.

A seção Certificates, Identifiers & Profiles contém todas as ferramentas de que você precisa. A partir dela, você pode criar, excluir e editar:
some.prefix.*), que podem ser usados com vários apps. App IDs podem conter informações de Application Service, como se o app habilita integração com Passbook, Game Center etc. Esses App IDs não podem ser identificadores curinga. Para que Application Services funcionem, o bundle identifier da sua aplicação deve corresponder ao identificador do App ID.Ao assinar seus jogos e apps no Defold, você precisa de um certificado válido e de um perfil de provisionamento válido.
Algumas das coisas que você pode fazer na página inicial do Member Center também podem ser feitas dentro do ambiente de desenvolvimento Xcode, se você o tiver instalado.

Se você não tiver o Xcode instalado, pode encontrar o identificador no iTunes. Clique no símbolo de dispositivos e selecione seu dispositivo.

Desde o Xcode 7, qualquer pessoa pode instalar o Xcode e desenvolver no dispositivo gratuitamente. Você não precisa se inscrever no iOS Developer Program. Em vez disso, o Xcode emitirá automaticamente um certificado para você como desenvolvedor (válido por 1 ano) e um perfil de provisionamento para seu app (válido por uma semana) no seu dispositivo específico.
Anote o bundle identifier, pois você deve usar o mesmo bundle identifier no seu projeto Defold.
Certifique-se de que o Xcode criou um Provisioning Profile e um Signing Certificate para o app.

Depois de verificar que o app funciona, encontre-o no seu disco. Você pode ver o local da build no relatório de build no “Report Navigator”.

Localize o app, clique com o botão direito nele e selecione Show Package Contents.


Esse arquivo de provisionamento pode ser usado junto com sua identidade de assinatura de código para assinar apps no Defold por uma semana.
Quando o provisionamento expirar, você precisará compilar o app novamente no Xcode e obter um novo arquivo de provisionamento temporário conforme descrito acima.
Quando você tiver a identidade de assinatura de código e o perfil de provisionamento, estará pronto para criar um pacote de aplicação autônomo para seu jogo a partir do editor. Basta selecionar Projeto ▸ Empacotar... ▸ Aplicação iOS... no menu.

Selecione sua identidade de assinatura de código e procure seu arquivo de provisionamento mobile. Selecione para quais arquiteturas (32 bits, 64 bits e o simulador iOS) empacotar, bem como a variante (Debug ou Release). Opcionalmente, você pode desmarcar a caixa de seleção Sign application para pular o processo de assinatura e assinar manualmente em uma etapa posterior.
Você deve desmarcar a caixa de seleção Sign application ao testar seu jogo no simulador iOS. Você conseguirá instalar a aplicação, mas ela não iniciará.
Pressione Criar Pacote… e então será solicitado que você especifique onde no seu computador o pacote será criado.

Você especifica qual ícone usar para o app, o storyboard da tela de lançamento e assim por diante no arquivo de configurações do projeto game.project, na seção iOS.
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.
Você pode instalar e iniciar o pacote criado usando as caixas de seleção “Install on connected device” e “Launch installed app” do editor no diálogo Bundle:

Você precisa ter a ferramenta de linha de comando ios-deploy instalada para que esse recurso funcione. A forma mais simples de instalá-la é usando Homebrew:
$ brew install ios-deploy
Se o editor não conseguir detectar o local de instalação da ferramenta ios-deploy, você precisará especificá-lo em Preferências.
Você cria um arquivo de storyboard usando o Xcode. Inicie o Xcode e crie um novo projeto. Selecione iOS e Single View App:

Clique em Next e prossiga para configurar seu projeto. Insira um Product Name:

Clique em Create para finalizar o processo. Seu projeto agora está criado e podemos prosseguir para criar o storyboard:

Arraste e solte uma imagem para importá-la para o projeto. Em seguida, selecione Assets.xcassets e solte a imagem em Assets.xcassets:

Abra LaunchScreen.storyboard e clique no botão de mais (+). Digite “imageview” no diálogo para encontrar o componente ImageView.

Arraste o componente Image View para o storyboard:

Selecione a imagem que você adicionou anteriormente a Assets.xcassets no menu suspenso Image:

Posicione a imagem e faça quaisquer outros ajustes necessários, talvez adicionando um Label ou outro elemento de UI. Quando terminar, defina o scheme ativo para “Build -> Any iOS Device (arm64, armv7)” (ou “Generic iOS Device”) e selecione Product -> Build. Aguarde o processo de build terminar.
Se você tiver apenas a opção arm64 em “Any iOS Device (arm64)”, altere iOS Deployment target para 10.3 nas configurações “Project -> Basic -> Deployment”. Isso tornará seu storyboard compatível com dispositivos armv7 (por exemplo, iPhone5c)
Se você usar imagens no storyboard, elas não serão incluídas automaticamente no seu LaunchScreen.storyboardc. Use o campo Bundle Resources em game.project para incluir recursos.
Por exemplo, crie a pasta LaunchScreen no projeto Defold e uma pasta ios dentro dela (a pasta ios é necessária para incluir esses arquivos apenas em pacotes iOS), então coloque seus arquivos em LaunchScreen/ios/. Adicione esse caminho em Bundle Resources.

A última etapa é copiar o arquivo compilado LaunchScreen.storyboardc para seu projeto Defold. Abra o Finder no seguinte local e copie o arquivo LaunchScreen.storyboardc para seu projeto Defold:
/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Intermediates.noindex/YOUR-PRODUCT-NAME.build/Debug-iphonesimulator/YOUR-PRODUCT-NAME.build/Base.lproj/LaunchScreen.storyboardc
O usuário do fórum Sergey Lerg preparou um tutorial em vídeo mostrando o processo.
Depois de obter o arquivo storyboard, você pode referenciá-lo a partir de game.project.
Isso é obrigatório a partir do Defold 1.2.175.
Usar um asset catalog é a forma preferida da Apple para gerenciar os ícones da sua aplicação. Na verdade, é a única forma de fornecer o ícone usado na listagem da App Store. Você cria um asset catalog da mesma forma que um storyboard, usando o Xcode. Inicie o Xcode e crie um novo projeto. Selecione iOS e Single View App:

Clique em Next e prossiga para configurar seu projeto. Insira um Product Name:
![]()
Clique em Create para finalizar o processo. Seu projeto agora está criado e podemos prosseguir para criar o asset catalog:
![]()
Arraste e solte imagens nas caixas vazias que representam os diferentes tamanhos de ícone compatíveis:
![]()
Não adicione ícones para Notifications, Settings ou Spotlight.
Quando terminar, defina o scheme ativo para “Build -> Any iOS Device (arm64)” (ou “Generic iOS Device”) e selecione Product -> Build. Aguarde o processo de build terminar.
Certifique-se de compilar para “Any iOS Device (arm64)” ou “Generic iOS Device”; caso contrário, você receberá o erro ERROR ITMS-90704 ao enviar sua build.
![]()
A última etapa é copiar o arquivo compilado Assets.car para seu projeto Defold. Abra o Finder no seguinte local e copie o arquivo Assets.car para seu projeto Defold:
/Library/Developer/Xcode/DerivedData/YOUR-PRODUCT-NAME-cbqnwzfisotwygbybxohrhambkjy/Build/Products/Debug-iphoneos/Icons.app/Assets.car
Depois de obter o arquivo asset catalog, você pode referenciá-lo e aos ícones a partir de game.project:
![]()
O ícone da App Store não precisa ser referenciado a partir de game.project. Ele é extraído automaticamente do arquivo Assets.car ao enviar para o iTunes Connect.
O editor grava um arquivo .ipa, que é um pacote de aplicação iOS. Para instalar o arquivo no seu dispositivo, você pode usar uma das seguintes ferramentas:
ios-deployApple Configurator 2 da macOS App StoreVocê também pode usar a ferramenta de linha de comando xcrun simctl para trabalhar com os simuladores iOS disponíveis pelo Xcode:
# mostrar uma lista de dispositivos disponíveis
xcrun simctl list
# iniciar um simulador iPhone X
xcrun simctl boot "iPhone X"
# instalar your.app em um simulador iniciado
xcrun simctl install booted your.app
# iniciar o simulador
open /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app
O manifesto de privacidade é uma lista de propriedades que registra os tipos de dados coletados pelo seu aplicativo ou SDK de terceiros, e as APIs de motivos exigidos que seu aplicativo ou SDK de terceiros usa. Para cada tipo de dado que seu aplicativo ou SDK de terceiros coleta e para cada categoria de API de motivos exigidos que ele usa, o aplicativo ou SDK de terceiros precisa registrar os motivos no arquivo de manifesto de privacidade incluído no bundle.
O Defold fornece um manifesto de privacidade padrão por meio do campo Privacy Manifest no arquivo game.project. Ao criar um bundle de aplicação, o manifesto de privacidade será mesclado com quaisquer manifestos de privacidade nas dependências do projeto e incluído no bundle da aplicação.
Leia mais sobre manifestos de privacidade na documentação oficial da Apple.
Ao enviar seu jogo para a App Store, você será solicitado a fornecer informações de Export Compliance em relação ao uso de criptografia no seu jogo. A Apple explica por que isso é necessário:
“Quando você envia seu app para o TestFlight ou para a App Store, você envia seu app para um servidor nos Estados Unidos. Se você distribui seu app fora dos EUA ou do Canadá, seu app está sujeito às leis de exportação dos EUA, independentemente de onde sua entidade legal esteja sediada. Se seu app usa, acessa, contém, implementa ou incorpora criptografia, isso é considerado uma exportação de software de criptografia, o que significa que seu app está sujeito aos requisitos de conformidade de exportação dos EUA, bem como aos requisitos de conformidade de importação dos países onde você distribui seu app.”
A engine de jogos Defold usa criptografia para os seguintes fins:
Esses usos de criptografia na engine Defold são isentos de requisitos de documentação de conformidade de exportação segundo as leis dos Estados Unidos e da União Europeia. A maioria dos projetos Defold permanecerá isenta, mas a adição de outros métodos criptográficos pode alterar esse status. É sua responsabilidade garantir que seu projeto atenda aos requisitos dessas leis e às regras da App Store. Veja a Visão geral de Export Compliance da Apple para mais informações.
Se você acredita que seu projeto está isento, defina a chave ITSAppUsesNonExemptEncryption como False no Info.plist do projeto; veja Manifestos de Aplicação para mais detalhes.
R: Certifique-se de usar no seu projeto Defold o mesmo bundle identifier que você usou no projeto Xcode ao gerar o perfil de provisionamento móvel.
R: De Inspect the entitlements of a built app:
codesign -d --ent :- /path/to/the.app
R: De Inspecting a profile’s entitlements:
security cms -D -i /path/to/iOSTeamProfile.mobileprovision