A Unreal Engine (UE) a partir da 5.3 atualiza o fluxo de trabalho do projeto do Xcode para que a Unreal Engine fique mais consistente com projetos de aplicativos do Xcode padrão. A nova configuração do projeto melhora a organização e a qualidade de vida dos desenvolvedores do Xcode e fornece acesso a várias ferramentas do Xcode para simplificar o design de código e o provisionamento, incluindo:
Assinatura de código automática
Como gerenciar direitos
Como editar arquivos
.plistProcessamento padrão do framework do Xcode
Esta página apresenta uma visão geral das mudanças para usuários de versões anteriores que migram para a UE 5.3 e mais recente (5.3+).
Pré-requisitos
O fluxo de trabalho atualizado do Xcode está disponível para a UE 5.3 e versões mais recentes, além de vir habilitado por padrão em novos projetos. No entanto, se precisar habilitá-lo manualmente, siga estas etapas:
Abra o diretório de instalação da sua engine, abra
Engine/Config/BaseEngine.inie defina a seguinte variável de configuração:Engine/Config/BaseEngine.ini
C++[/Script/MacTargetPlatform.XcodeProjectSettings] bUseModernXcode=trueGere novamente os arquivos do projeto do Xcode para a engine e o seu projeto. Se estiver usando uma versão do código-fonte da UE, execute o
GenerateProjectFiles.commandno diretório de instalação da engine para gerar novamente os arquivos de projeto para o código-fonte da UE. Você verá três arquivos do espaço de trabalho do Xcode no diretório do projeto:UE5 (Mac).xcworkspaceUE5 (TVOS).xcworkspaceUE5 (IOS).xcworkspace
A nova configuração do Xcode está pronta para uso. As seções a seguir explicam as novidades em comparação à configuração do projeto antigo.
Projetos, esquemas e configurações de compilação
Antes, os projetos do Xcode na UE combinava destinos e configurações de versão para formar Esquemas. Por exemplo, em um único projeto (MyProject), os usuários tinham um esquema "Editor de desenvolvimento" que criava uma versão de desenvolvimento de um destino do editor.
A UE 5.3+ fornece um projeto do Xcode separado (dentro do mesmo espaço de trabalho do Xcode) para cada tipo de destino. Por exemplo, um espaço de trabalho do Xcode para um projeto chamado "MyProject" teria um projeto separado para MyProjectEditor, MyProjectGame, MyProjectClient e MyProjectServer.
Cada destino tem apenas configurações de compilação compatíveis. Por exemplo, a maioria dos editores não oferece suporte para configurações de teste ou lançamento. Por isso, não estão disponíveis nos projetos do editor.
Os espaços de trabalho atualizados têm muitos esquemas. Ao analisá-los, use o Filtro e a seção Recentes para restringir a lista conforme necessário.
Espaços de trabalho por plataforma
Antes, quando a UE gerava arquivos de projeto, criava um espaço de trabalho monolítico que incluía destinos para cada uma das plataformas da Apple.
Na UE 5.3+, quando a UE gera arquivos de projeto, ela cria um espaço de trabalho separado para cada plataforma da Apple.
Simplifica espaços de trabalho e projetos. Como o Xcode pode abrir vários espaços de trabalho, você pode alternar entre plataformas pressionando Command + ` (crase).
Cada espaço de trabalho contém apenas os destinos compatíveis com essa plataforma. Portanto, iOS e tvOS têm menos esquemas disponíveis. Ele tem um destino no UnrealEditor, mas não consegue compilar de forma eficiente. Em vez disso, esses destinos estão presentes para disponibilizar o código-fonte para pesquisa.
Aplicativos independentes
Antes, a UE agrupava todos os dados necessários para rodar aplicativos iOS, iPadOS e tvOS em seus respectivos arquivos .app, tornando-os independentes. No entanto, os projetos com macOS dividem os dados entre o .app, o diretório Saved/Cooked/Mac e outros locais nos diretórios "Engine" e "Project".
Na UE 5.3 ou mais recente, todas as plataformas Mac usam o mesmo fluxo de trabalho, que reúne os dados necessários em um posição e os agrupa em um .app que você pode executar manualmente ou com o Xcode. Para isso, use o passo "Etapa" no processo de preparação.
As versões do editor ainda não são preparadas e ficam em pastas soltas.
Empacotamento e distribuição
Os processos de empacotamento para macOS e iOS/tvOS/iPadOS agora são totalmente consistentes entre si.
A UE não gera mais um arquivo .ipa para iOS automaticamente, pois não é necessário no macOS e só é útil no Windows.
Distribuição
O modo Distribuição não projeta códigos mais usando um certificado de Distribuição. Em vez disso, cria um arquivo do Xcode padrão (.xcarchive), que você pode usar para distribuir o .app para vários destinos, como a App Store ou sua equipe. Ao criar versões de distribuição, o Xcode também gera um arquivo .dSYM para colocar no arquivo Xcode, o que é útil para depurar falhas e pode ser enviado para a Apple para depurar falhas em tempo real. Você envia o arquivo .dysm com seu aplicativo ao enviá-lo para ser analisado pela Apple.
A geração de .dSYM leva alguns minutos.
Para empacotar normalmente, clique em Plataformas > Empacotar projeto no Unreal Editor, ou adicione -package -clientconfig=Shipping à linha de comando do BuildCookRun.
Para empacotar para distribuição, marque a caixa de seleção Distribuição nas Configurações de Projeto ou adicione -package -clientconfig=Shipping -distribution à linha de comando do BuildCookRun.
Você também pode clicar em Produto > Arquivo no Xcode.
O Xcode usa o fluxo padrão para gerar um .xcarchive, incluindo o diretório Preparado e frameworks de design de códigos. Ele usa a configuração Lançamento, mesmo que você defina o esquema como Desenvolvimento.
Se você usar Arquivar no Xcode, ele abrirá automaticamente a janela Arquivos e selecionará o novo arquivo. Se usar outros métodos da UE para criá-lo, você precisará abrir a janela manualmente clicando em Janela > Organizador e, em seguida, selecionar o projeto e Arquivos no canto superior esquerdo.
Use os botões à direita da janela Arquivos para validar ou distribuir o aplicativo. Você pode usar isso para criar um arquivo .ipa do iOS para uso interno seguindo as instruções de cada opção. Para validação/distribuição na App Store, você deve criar uma entrada no aplicativo em appstoreconnect.apple.com.
As solicitações para distribuir ou validar o aplicativo podem exigir que você escolha um certificado de distribuição ou siga outras etapas de provisionamento. Confira a documentação da Apple para obter mais informações.
O arquivamento no Xcode usa Lançamento, pois é a configuração padrão para a ação Arquivar no esquema gerado pela UE. Além disso, o código -package -distribution usará a ação do Xcode Arquivar em segundo plano, em vez da ação Copilar.
Você pode alterar isso no esquema se precisar testar, mas recomendamos distribuir apenas versões de lançamento.
Configure o nome de exibição do seu aplicativo no MacOS
O nome de exibição do aplicativo é o nome do .app do Mac ao realizar uma compilação arquivada. Quando você empacota para distribuição (ou usa o menu Arquivo no Xcode), o nome de exibição é o nome do .app que os usuários veem ao usar o Finder. Se isso não estiver definido, o .app terá o mesmo nome do arquivo .uproject. Para alterar o nome de exibição na UE 5.3.2 e em versões mais recentes, abra o seu arquivo MacEngine.ini e defina a variável de configuração ApplicationDisplayName:
MacEngine.ini
[Xcode]
ApplicationDisplayName="Friendly Application Name"O ApplicationDisplayName não é o mesmo nome de exibição do pacote usado para iOS, e você precisa configurá-los separadamente para aplicativos executados no MacOS e no iOS.
Projetos somente de Blueprints/conteúdo
Como os projetos somente de conteúdo (ou somente Blueprint) não têm um projeto do Xcode nem compilam arquivos de origem de destino, eles reutilizam os destinos genéricos de UnrealGame da engine combinados com os dados específicos do projeto para criar um.
Práticas padrão do Xcode
O fluxo de trabalho atualizado do Xcode usa Xcode para gerenciar o maior número possível de componentes de acordo com o fluxo de trabalho padrão do Xcode, incluindo:
Design de códigos.
Arquivos
.plist.Arquivos de direitos.
Frameworks.
Design de códigos
Antes, apenas iOS/iPadOS/tvOS precisava de design de códigos. A partir de 2023, a Apple também passou a exigir design de códigos para macOS. Por padrão, o fluxo de trabalho atualizado usa o design de códigos para todas as plataformas do Xcode.
Para usar o design de códigos automático, siga estas etapas:
Faça log in na sua conta de desenvolvedor Apple no Xcode.
Abra Configurações de Projeto, localize Plataformas > Projetos do Xcode e defina as seguintes propriedades:
| Nome da configuração | CVar | Descrição |
|---|---|---|
Usar assinatura de código moderna |
| Habilita a assinatura de código automática para seu projeto da UE. É preciso definir as duas configurações a seguir. |
Prefixo de assinatura moderna |
| Um nome de domínio reverso para a sua empresa. Por exemplo: |
Equipe de assinatura moderna | `ModernSigningTeam | O ID da equipe que o aplicativo usa na assinatura. É igual ao ID da equipe na seção "Assinatura e capacidades do Xcode". Confira a sua ID da equipe abaixo para obter mais detalhes. |
Localize a sua ID da equipe
Para localizar sua ID da equipe para a configuração "Equipe de assinatura moderna", abra a Página de Desenvolvedores Apple, faça login com sua conta e clique em Detalhes da Assinatura. O ID da equipe será exibido.
.plist do Xcode
Todo aplicativo precisa incluir um arquivo .plist . O arquivo .plist final O arquivo geralmente é criado a partir de um modelo que o Xcode modificará com base nas configurações do projeto. Como a UE gera projetos em Xcode, esse pode ser um processo complicado.
O fluxo de trabalho atualizado do Xcode fornece controle de alto nível sobre .plist para gerenciamento de arquivos. Além disso, editar o arquivo .plist no Xcode agora é compatível
Por padrão, você perderá as alterações do iOS se editar o .plist nas configurações. Confira a seção MacOS vs. iOS abaixo para obter mais detalhes.
Modelo vs pré-criado.
É preferível que o Xcode finalize o .plist no aplicativo usando configurações do projeto do Xcode gerado na UE. No entanto, a UE também é compatível com arquivos .plist pré-criados que o Xcode não modificará. Por ser uma funcionalidade avançada, ela não é exposta nas configurações de projeto do Xcode e requer a edição de um arquivo de configuração. Consulte para usar .plist pré-criado abaixo para obter instruções.
As configurações do .plist nas Configurações de Projeto (os itens Info.plist para destino Mac e Info.plist para destino iOS) fornecem uma maneira de especificar o modelo .plist padrão, ou seu próprio modelo de .plist personalizado.
Os locais padrão dos arquivos Template.plist do modelo estão no diretório Build/IOS do projeto. Quando a UE gera arquivos de projeto do Xcode para seu projeto, será verificado se você tem um modelo .plist no projeto e, se não houver, será copiado arquivo .plist da engine para a pasta do projeto.
Se você editar as configurações .plist no Xcode, apontando para um arquivo .plist no seu diretório de instalação da UE (em vez do diretório do seu projeto), o Xcode o marcará como editável e o modificará, e todos os projetos da UE que usam essa instalação serão afetados. É por isso que a UE copia o arquivo .plist da engine para o projeto. Você pode querer comparar o arquivo .plist das próximas versões da engine para ver se atualizamos as configurações padrão.
Se isso acontecer, consulte as instruções sobre como restaurar um arquivo .plist para o padrão abaixo.
O destino do UnrealEditor tem um único .plist, pois o .app é compartilhado por todos os projetos. Isso é algo com o qual a maioria dos usuários não precisará se preocupar.
Use um .plist pré-criado
Se quiser usar um .plist pré-criado, modifique o arquivo DefaultEngine.ini e defina uma ou ambas as configurações a seguir com caminhos para os arquivos que deseja usar:
DefaultEngine.ini
[/Script/MacTargetPlatform.XcodeProjectSettings]
PremadeMacPlist=(FilePath="/Game/Build/Mac/Resources/MyGameMac.plist")
PremadeIOSPlist=(FilePath="/Game/Build/IOS/Resources/MyGameIOS.plist")Restaure um .plist para o padrão
Você também pode usar o botão Restaurar Info.plist para o padrão para copiar novamente o arquivo do modelo .plist padrão do Mac do diretório da engine ao seu projeto e defina os valores apropriadamente. Isso pode ser útil se você quiser usar um arquivo .plist padrão atualizado em versões futuras da UE.
Você pode obter um arquivo .plist em um aplicativo gerado e usá-lo como origem de um .plist pré-criado.
Manifestos de privacidade
O Xcode usa manifestos de privacidade para resumir que tipo de dados seu aplicativo coleta sobre seus usuários e por que ele coleta esses dados. Isso inclui dados coletados pelo seu próprio código, bem como SDKs de terceiros que você está usando. Quando você distribui seu app, o Xcode combina os manifestos de privacidade dos seus SDKs e do seu aplicativo num único relatório de privacidade, facilitando o fornecimento de informações transparentes aos usuários sobre as práticas de privacidade do seu aplicativo.
A UE fornece manifestos de privacidade padrão nos seguintes locais:
MacOS:
Engine/Build/Mac/Resources/UEMetadata/PrivacyInfo.xcprivacyiOS, tvOS e iPadOS:
Engine/Build/iOS/Resources/UEMetadata/PrivacyInfo.xcprivacy
Projetos que utilizam funções adicionais de privacidade precisam fornecer um arquivo adicional PrivacyInfo.xcprivacy no local especificado pelas configurações de projeto UE. Por padrão, esses locais são:
MacOS:
/Game/Build/Mac/Resources/PrivacyInfo.xcprivacyiOS, tvOS e iPadOS:
/Game/Build/IOS/Resources/PrivacyInfo.xcprivacy
Para mais informações, consulte a documentação da Apple sobre Manifestos de privacidade.
MacOS vs. iOS
Trabalho com .plist O novo fluxo de trabalho do Xcode é diferente no macOS e no iOS, pois o UBT tem uma lógica profundamente embutida para gerar arquivos .plist para iOS. Não era viável trazer essa lógica para o gerador de projeto/Xcode.
Nas configurações padrão de UBT, você verá que ele aponta para /Game/Build/IOS/UBTGenerated/Info.Template.plst**,** que indica que, toda vez que o UBT for executado, ele pode alterar o conteúdo para o .plist do iOS.
No entanto, você pode alterar as configurações do projeto para usar o arquivo de modelo de .plist (ou .plist pré-criado), que ignorará o que o UBT gerar. Se fizer isso, você pode usar o Xcode para editar o arquivo .plist .
Veja a seguir uma visão geral das diferenças entre os arquivos .plist para Mac e iOS:
| Mac | IOS | |
|---|---|---|
.plist padrão | Modelo copiado do diretório da engine. | Modelo gerado por UBT. |
Modificação do .plist do Xcode | Sim | Não se estiver usando geração por UBT |
Direitos
Todo app designa direitos como parte do design e códigos. Os direitos controlam algumas funcionalidades ou restrições feitas pela Apple, como suporte para GameCenter ou execução no sandbox de segurança do Mac.
A geração de projeto do Xcode da UE trata direitos de forma semelhante aos arquivos .plist (Mac) acima. A UE gera um projeto do Xcode e, se não houver um arquivo de direitos no local padrão do projeto, o padrão será copiado do diretório da engine. Você pode usar o Xcode (ou um editor de texto) para modificar os direitos, que estão localizados em Build/Mac/Entitlements ou Build/IOS/Entitlements, no projeto.
Se tiver diferentes restrições de sandbox ou outras diferenças no lançamento para os usuários finais, você poderá definir direitos separados para lançamento e desenvolvimento. Você deve apontá-las para o mesmo arquivo se não precisar de funcionalidades separadas.
No momento, apenas direitos para Mac são expostos nas Configurações de Projeto.
Estas são as configurações padrão de direitos para macOS e iOS:
| Configuração de direito | Mac | IOS |
|---|---|---|
Desenvolvimento padrão | Em sandbox, permite conexões de rede cliente/servidor. | Sem direitos especiais definidos. |
Lançamento padrão | Em sandbox, permite conexões de rede do cliente. | Sem direitos especiais definidos. |
O Relator de Falhas não é compatível com jogos empacotados que habilitam o direito do sandbox (padrão desde a UE 5.3).
Frameworks
Frameworks são um sistema do Xcode para coletar cabeçalhos, bibliotecas e conteúdo. Agora o novo fluxo de trabalho do Xcode trata de com frameworks usando métodos padrão do Xcode, em vez de copiar e assinar manualmente, como no fluxo de trabalho anterior. Quando a UE gera um projeto do Xcode, ela usa o sistema de compilação para encontrar os frameworks referenciados definidos em vários arquivos de origem da compilação. Em seguida, configura o projeto do Xcode para copiar bibliotecas e conteúdo dinâmico no pacote do aplicativo e projetar códigos conforme necessário.
Logs de acesso
Os arquivos de logs podem aparecer em locais diferentes, dependendo das configurações do sandbox e da forma de execução do aplicativo:
Se o sandbox estiver habilitado:
Execução pelo Xcode: ~/Library/Logs/[nome do projeto]
Execução ao clicar duas vezes ou usar o terminal: ~/Library/Containers/[ID do pacote do aplicativo]/Data/Library/Logs
Com o Sandbox desabilitado:
~/Library/Logs/[nome do projeto]