Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Compilação cruzada para iOS no Linux

O procedimento para isso é um pouco complexo e exige muitas etapas, mas assim que você tiver o ambiente configurado corretamente, poderá compilar o Godot para iOS sempre que quiser.

Isenção de responsabilidade

Embora seja possível compilar para iOS em um ambiente Linux, a Apple é muito restritiva quanto às ferramentas a serem usadas (especialmente em termos de hardware), permitindo praticamente apenas seus próprios produtos para o desenvolvimento. Portanto, isso não é oficial. No entanto, em 2010 a Apple disse que relaxou algumas das diretrizes de revisão da App Store para permitir que qualquer ferramenta seja usada, desde que o binário resultante não baixe nenhum código, o que significa que deve ser OK usar o procedimento descrito aqui e fazer a compilação cruzada do binário.

Requisitos

  • Xcode com o SDK do iOS (você deve estar logado em um ID Apple para baixar o Xcode).

  • Clang >= 3.5 para sua máquina de desenvolvimento instalado e no PATH. Deve ser a versão >= 3.5 para visar a arquitetura arm64.

  • xar e pbzx (necessários para extrair o arquivo .xip no qual o Xcode é fornecido).

    • Para buildar o xar e o pbzx, você pode seguir este guia.

  • cctools-port para as ferramentas de build necessárias. O procedimento para o build é bastante peculiar e está descrito abaixo.

    • Isso também possui algumas dependências extras: automake, autogen, libtool.

Configurando o ambiente

Preparando o SDK

Extraia o arquivo .xip do Xcode que você baixou do site de desenvolvedores da Apple:

mkdir xcode
xar -xf /path/to/Xcode_X.x.xip -C xcode
pbzx -n Content | cpio -i

[...]
######### Blocks

Observe que para os comandos abaixo, você precisará substituir a versão (x.x) por qualquer versão do SDK do iOS que estiver usando. Se você não souber a versão do SDK do seu iPhone, poderá ver o arquivo JSON dentro de Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs.

Extraia o SDK do iOS:

export IOS_SDK_VERSION="x.x"
mkdir -p iPhoneSDK/iPhoneOS${IOS_SDK_VERSION}.sdk
cp -r xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/* iPhoneSDK/iPhoneOS${IOS_SDK_VERSION}.sdk
cp -r xcode/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/* iPhoneSDK/iPhoneOS${IOS_SDK_VERSION}.sdk/usr/include/c++
fusermount -u xcode

Empacote o SDK para que o cctools possa usá-lo:

cd iPhoneSDK
tar -cf - * | xz -9 -c - > iPhoneOS${IOS_SDK_VERSION}.sdk.tar.xz

Cadeia de ferramentas

Builde o cctools:

git clone https://github.com/tpoechtrager/cctools-port.git
cd cctools-port/usage_examples/ios_toolchain
./build.sh /path/iPhoneOS${IOS_SDK_VERSION}.sdk.tar.xz arm64

Copie as ferramentas para um lugar melhor. Observe que os scripts do SCons para build buscarão sob usr/bin dentro do diretório que você fornecer para os binários da toolchain, portanto você deve copiar para esse subdiretório, semelhante aos seguintes comandos:

mkdir -p "$HOME/iostoolchain/usr"
cp -r target/bin "$HOME/iostoolchain/usr/"

Agora você deve ter os binários da toolchain do iOS em $HOME/iostoolchain/usr/bin.

Compilando Godot para o iPhone

Depois de concluir as etapas acima, você deve manter duas coisas em seu ambiente: a toolchain buildada e o diretório do SDK do iPhoneOS. Eles podem ficar onde você quiser, já que você precisa fornecer os caminhos deles para o comando de build do SCons.

Para que a plataforma do iPhone seja detectada, você precisa da variável de ambiente OSXCROSS_IOS definida para qualquer coisa.

export OSXCROSS_IOS="anything"

Agora você pode compilar para iPhone usando o SCons da maneira padrão do Godot, com alguns argumentos adicionais para fornecer os caminhos corretos:

scons platform=ios arch=arm64 target=template_release IOS_SDK_PATH="/path/to/iPhoneSDK" IOS_TOOLCHAIN_PATH="/path/to/iostoolchain" ios_triple="arm-apple-darwin11-"