> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Crie um app iOS com Devin

> Criando um app iOS com Devin em uma VM macOS: build, testes e TestFlight

Neste tutorial, Devin cria um pequeno rastreador de hábitos em SwiftUI a partir de um repositório vazio. Devin escreve o código, faz o build com o Xcode, executa o app no iOS Simulator e abre um PR. Você acompanha o trabalho, revisa o resultado e depois pede que Devin publique um build beta no TestFlight.

<Frame>
  <img src="https://mintcdn.com/cognitionai-enterprise/U1cPD7hedYbOv-HZ/images/onboard-devin/macos-ios-app.gif?s=b5ea4c9e343894faddc9ca8ea7ce8121" alt="Devin criando um jogo iOS em uma VM macOS" width="1864" height="1080" data-path="images/onboard-devin/macos-ios-app.gif" />
</Frame>

<div id="before-you-start">
  ## Antes de começar
</div>

* **VMs macOS**: as sessões do Devin precisam rodar no macOS. Se você usa um deployment Dedicated SaaS, peça ao seu account team para ativar as VMs macOS. Veja [suporte a macOS](/pt-BR/onboard-devin/environment/macos-support).
* **Um repositório**: crie um repositório vazio (por exemplo, `habit-tracker`) e conceda acesso a ele ao Devin por meio da sua [integração com o Git](/pt-BR/onboard-devin/environment#before-you-start).
* **Modo Desktop**: ative **Enable desktop mode** em [Configurações > Personalização](https://app.devin.ai/customization) para que o Devin consiga interagir com o Simulator e gravar seus testes. Veja [Computer Use](/pt-BR/work-with-devin/computer-use).

<Info>
  As sessões no macOS têm o mesmo uso que as sessões no Linux. Não há custo adicional para macOS.
</Info>

<div id="step-1-prompt-devin-to-build-the-app">
  ## Etapa 1: Peça ao Devin para fazer o build do app
</div>

Inicie uma nova sessão no repositório escolhido e escolha **macOS** no menu de plataforma abaixo da caixa de prompt. O Xcode, o iOS Simulator e o Homebrew já vêm pré-instalados, então não é preciso configurar nada antes.

<Note>
  No Slack, adicione o [bang command](/pt-BR/integrations/slack) `!mac` à sua mensagem. Pela [API](/pt-BR/api-reference/overview), defina `platform: "macos"` ao criar uma sessão.
</Note>

Dê ao Devin um prompt específico que cubra os recursos do app, as ferramentas e como comprovar que tudo funciona. Veja um exemplo:

```text theme={null}
Crie um app iOS em SwiftUI chamado HabitTracker neste repositório.

Requisitos:
- Mire no iOS 17+. Use SwiftUI e o framework Observation.
- Tela principal: uma lista de hábitos, cada um com um nome, um ícone
  SF Symbol e um botão de marcação que marca o hábito como concluído hoje.
- Mostre a sequência atual (dias consecutivos concluídos) ao lado de cada hábito.
- Um botão "+" na barra de ferramentas abre uma sheet para adicionar um hábito. Deslize para excluir.
- Por enquanto, mantenha os hábitos em memória. Ainda sem persistência.

Configuração do projeto:
- Instale xcodegen, swiftlint e xcbeautify com o Homebrew.
- Defina o projeto em project.yml com o XcodeGen. Faça commit do project.yml
  e adicione o .xcodeproj gerado ao .gitignore.
- Adicione um target de testes unitários com testes XCTest para o cálculo da sequência.
- Garanta que o swiftlint passe sem erros.

Verificação:
- Faça o build e execute os testes no simulador do iPhone 17.
- Instale e abra o app no Simulator. Adicione dois hábitos, marque um
  como concluído e exclua um. Registre isso e me envie uma captura da
  tela principal.
- Abra um PR com um resumo curto e a captura de tela.
```

Um bom prompt para iOS:

* **Informa a versão da plataforma e os frameworks**, para que o Devin não precise adivinhar o deployment target ou a arquitetura.
* **Informa o dispositivo do simulador**, para que os comandos de build usem um destino que exista na VM.
* **Descreve um fluxo de verificação concreto**, para que o Devin teste o comportamento que importa para você, em vez de apenas verificar se o código compila.

<div id="step-2-watch-devin-build-and-test">
  ## Etapa 2: Acompanhe o Devin compilar e testar
</div>

O Devin resolve a tarefa como um desenvolvedor iOS faria:

1. **Monta a estrutura do projeto**: escreve o `project.yml`, as views SwiftUI, o modelo de hábitos e o target de testes e, em seguida, executa `xcodegen generate`.

2. **Compila e corrige erros**: executa o `xcodebuild` pelo shell, lê a saída do compilador e corrige os erros até que o build e os testes passem.

3. **Executa o app no Simulator**: inicializa o dispositivo, instala e abre o build:

   ```bash theme={null}
   xcrun simctl boot "iPhone 17"
   xcrun simctl install booted <path-to-HabitTracker.app>
   xcrun simctl launch booted <bundle-id>
   ```

4. **Testa o fluxo que você descreveu**: navega pelo app com [Computer Use](/pt-BR/work-with-devin/computer-use), confere o resultado na tela e [grava](/pt-BR/work-with-devin/testing-and-recordings) a execução.

5. **Abre uma PR** com o resumo e a captura de tela.

Abra a aba **iOS Simulator** no workspace da sessão para acompanhar ao vivo o simulador em execução enquanto o Devin navega pelo app.

<Tip>
  Se o build não encontrar um destino, peça ao Devin para executar `xcrun simctl list devices available` e usar um dispositivo e um sistema operacional que a VM realmente tenha.
</Tip>

<div id="step-3-review-and-iterate">
  ## Etapa 3: Revise e itere
</div>

Revise o PR como faria com qualquer outro. Verifique se a captura de tela e a gravação correspondem ao que você solicitou. Em seguida, continue o desenvolvimento na mesma sessão com prompts de acompanhamento:

```text theme={null}
Persista os hábitos e o histórico de conclusão com SwiftData para que
sobrevivam a reinicializações do app. Adicione um teste que insira um hábito
em um contêiner de modelo em memória e verifique a sequência. Reinicie o app
no Simulator para confirmar que os hábitos persistem e faça push no mesmo PR.
```

```text theme={null}
Adicione um target de teste de UI com um XCUITest que adicione um hábito,
marque-o como concluído e verifique se a sequência mostra 1. Execute-o no
simulador do iPhone 17.
```

```text theme={null}
Dê suporte ao Modo Escuro e ao Dynamic Type. Analise a tela principal no
Simulator com a aparência escura e no maior tamanho de texto de
acessibilidade, e envie screenshots dos dois casos.
```

Você também pode deixar comentários de revisão no PR, e o Devin responde a eles enquanto a sessão estiver ativa. Consulte [Integração com GitHub](/pt-BR/integrations/gh) e [Devin Review](/pt-BR/work-with-devin/devin-review).

<div id="step-4-ship-a-beta-to-testflight">
  ## Etapa 4: Publique um beta no TestFlight
</div>

Assim que o app funcionar no Simulator, o Devin pode arquivá-lo, assiná-lo e importar o build para o TestFlight, para que os testadores possam instalá-lo em dispositivos reais.

Isso exige uma configuração inicial única, feita por você. O guia [Importar builds do iOS para o TestFlight](/pt-BR/onboard-devin/environment/testflight) detalha cada etapa:

1. **Configure o App Store Connect**: aceite os contratos, registre o bundle ID, crie o registro do app, crie um grupo beta e responda ao questionário de conformidade de exportação.
2. **Crie uma chave de API do App Store Connect** e baixe o arquivo `.p8`.
3. **Adicione os segredos no Devin**: `ASC_KEY_ID`, `ASC_ISSUER_ID`, `ASC_PRIVATE_KEY` e `APPLE_TEAM_ID`.
4. **Libere o acesso à rede** aos servidores da Apple, caso sua organização use uma política de rede restritiva.

<Note>
  Use o mesmo bundle ID no `project.yml` e no App Store Connect. Se o Devin escolheu um bundle ID de exemplo na Etapa 1, peça que ele atualize o projeto antes.
</Note>

Depois, inicie uma nova sessão para que os segredos fiquem disponíveis e peça ao Devin:

```text theme={null}
Arquive o scheme HabitTracker e importe-o para o TestFlight. Use um número
de build maior que o do build mais recente no App Store Connect, adicione o
build ao grupo beta "QA" e me envie o número do build ao concluir.
```

Devin grava a chave de API em disco, arquiva o app com `xcodebuild archive` e faz a importação com `xcodebuild -exportArchive`. Em seguida, adiciona a build processada ao grupo beta. Para reutilizar essas etapas sem repeti-las em cada prompt, adicione uma entrada `testflight` à seção `knowledge` do blueprint. Veja [Salve as etapas no seu blueprint](/pt-BR/onboard-devin/environment/testflight#save-the-steps-in-your-blueprint).

<div id="tips">
  ## Dicas
</div>

* **Fixe a toolchain**: as imagens do macOS incluem mais de uma versão do Xcode. Use `DEVELOPER_DIR` ou `xcode-select` no blueprint para escolher uma. Veja [Selecionar uma versão do Xcode](/pt-BR/onboard-devin/environment/macos-support#selecting-an-xcode-version).
* **Armazene credenciais como segredos**: chaves de API do App Store Connect, certificados de assinatura e tokens de registros privados de pacotes devem ficar em [Segredos](/pt-BR/product-guides/secrets). O Devin os lê como variáveis de ambiente.
* **Libere os registros de pacotes**: se a sua organização usa uma política de rede restrita, garanta que a lista de permissões do macOS inclua o Swift Package Manager, o CocoaPods ou quaisquer registros privados usados pelo seu app. Veja [Acesso à rede](/pt-BR/onboard-devin/environment/macos-support#network-access).
* **Reinicie o Simulator ao retomar a sessão**: quando uma sessão entra em suspensão e é retomada, os arquivos permanecem, mas os processos em execução não. Peça ao Devin para iniciar o Simulator novamente antes de testar.
* **Peça evidências**: peça capturas de tela ou uma gravação de telas específicas para conferir a UI sem precisar executar o app você mesmo.

<div id="limitations">
  ## Limitações
</div>

* O Devin executa apps em simuladores, não em iPhones ou iPads físicos. Para testar em um dispositivo, instale um build via [TestFlight](#step-4-ship-a-beta-to-testflight).
* Resultados de medição de tempo e profiling dentro de uma VM não refletem o desempenho real em dispositivos.
* Contêineres rodam sob emulação por software em VMs macOS, portanto tarefas que dependem muito de contêineres ficam lentas.

Consulte [limitações do suporte a macOS](/pt-BR/onboard-devin/environment/macos-support#limitations) para mais detalhes.

<div id="next-steps">
  ## Próximos passos
</div>

<CardGroup cols={2}>
  <Card title="Importações para o TestFlight" icon="paper-plane" href="/pt-BR/onboard-devin/environment/testflight">
    Configuração do App Store Connect, chaves de API e segredos para importar builds
  </Card>

  <Card title="Suporte ao macOS" icon="apple" href="/pt-BR/onboard-devin/environment/macos-support">
    Opções de blueprint, ferramentas pré-instaladas e solução de problemas para sessões no macOS
  </Card>

  <Card title="Testes e gravações" icon="video" href="/pt-BR/work-with-devin/testing-and-recordings">
    Como o Devin testa o seu app e registra os resultados
  </Card>
</CardGroup>
