Start Debugging
2026-01-23 flutter Edit on GitHub

Depurando Flutter iOS no Windows: um fluxo com dispositivo real (Flutter 3.x)

Um fluxo pragmático para depurar apps Flutter iOS no Windows: delegue o build para macOS no GitHub Actions, instale o IPA num iPhone real e use flutter attach para hot reload e DevTools.

A cada poucas semanas a mesma dor reaparece: “Estou no Windows. Quero depurar meu app Flutter iOS num iPhone real. Preciso mesmo de um Mac?”. Um post recente no r/FlutterDev propõe uma saída pragmática: delegar o build de iOS para macOS no GitHub Actions e depois instalar e atachar para depurar do Windows: https://www.reddit.com/r/FlutterDev/comments/1qkm5pd/develop_flutter_ios_apps_on_windows_with_a_real/

O projeto open source por trás disso é https://github.com/MobAI-App/ios-builder.

Divida o problema: build no macOS, depuração no Windows

iOS tem duas restrições duras:

Mas a depuração no Flutter é, na maior parte, “atachar num app em execução e conversar com o VM service”. Isso significa que você pode desacoplar o build/install do ciclo de desenvolvimento, desde que consiga colocar no aparelho um app capaz de ser depurado.

O fluxo descrito no post é:

Um build mínimo no GitHub Actions que produz um IPA

Isso não é a história completa (assinatura é uma toca de coelho à parte), mas mostra a ideia central: um runner de macOS compila e sobe um artefato.

name: ios-ipa
on:
  workflow_dispatch:
jobs:
  build:
    runs-on: macos-latest
    steps:
      - uses: actions/checkout@v4
      - uses: subosito/flutter-action@v2
        with:
          channel: stable
      - run: flutter pub get
      - run: flutter build ipa --debug --no-codesign
      - uses: actions/upload-artifact@v4
        with:
          name: ios-ipa
          path: build/ios/ipa/*.ipa

Se --no-codesign é aceitável depende de como você planeja instalar. Muitos caminhos para dispositivo real ainda exigem assinatura em alguma etapa, mesmo em fluxos de debug.

O ciclo no lado Windows: instale e depois atache

Quando o app já está instalado e rodando no iPhone, a parte do Flutter vira o de sempre:

# From Windows
flutter devices
flutter attach -d <device-id>

O hot reload funciona porque você está se atachando a uma sessão de depuração, não porque você compilou na mesma máquina.

Conheça os tradeoffs desde o começo

Esse fluxo é útil, mas não é mágica:

Se quiser o texto original e o repo que disparou essa discussão, comece aqui: https://github.com/MobAI-App/ios-builder. Para a orientação oficial do Flutter sobre depuração em iOS, mantenha a documentação da plataforma por perto: https://docs.flutter.dev/platform-integration/ios/ios-debugging.

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Voltar