← Nesim Apps

Depurar um iPhone no Windows por USB: capturas de tela e logs com Python

Por Nesim Razon, desenvolvedor Android independente · 2026-11-14

#Notas de desenvolvimento#iOS

No Android, o adb facilita tirar uma captura de tela ou ler um log de um celular na sua mesa. Eu não esperava nada assim para um iPhone no Windows, mas existe um caminho: o pacote de drivers da própria Apple e uma ferramenta Python de código aberto. Esta é a configuração que funcionou em um iPhone 7 com iOS 15.8, as armadilhas na ordem em que as encontrei e um erro real que resolvi com ela.

O que você precisa

A ordem da instalação importa

Depois de instalar o Apple Devices, o iPhone ainda aparecia no Gerenciador de Dispositivos com status de erro, e a ferramenta respondia que não conseguia conectar ao socket do usbmux. A solução foi abrir o app Apple Devices uma vez, com o celular conectado e desbloqueado, aceitar o aviso de confiança e deixá-lo terminar a instalação dos drivers. Só então o celular foi listado corretamente.

A armadilha do Python

Na minha máquina o primeiro python do caminho era um velho Python 2.7, então o comando pip simples não instalou nada útil. No Windows o lançador py escolhe o certo: instale com py -3 -m pip install pymobiledevice3 e sempre execute a ferramenta como py -3 -m pymobiledevice3, porque o executável que ela cria não está no caminho.

Quatro comandos que uso o tempo todo

Ler o log sem se afogar

syslog live imprime tudo o que o celular registra, que é muita coisa. Filtrar pelo nome do processo deixa só o seu app. Mesmo assim meu app gerou mais de um megabyte de log em trinta segundos, então escrevo a saída em um arquivo e procuro depois em vez de ver rolar.

Suas próprias mensagens são as mais fáceis de achar. No Swift uma chamada a NSLog aparece neste log, então marco minhas linhas com o nome do app e procuro essa marca.

Um exemplo real: por que o banner estava vazio?

Meu jogo não mostrava o banner de anúncios depois que troquei a unidade de anúncios de demonstração do Google pela real. O celular não mostrava nenhum erro visível. Adicionei um pequeno delegado à visualização do banner que escreve com NSLog o resultado do pedido de anúncio, compilei, instalei pelo TestFlight e li o log por USB.

A resposta foi uma só linha: não há anúncio para mostrar. Isso significa que o servidor de anúncios não tinha com o que preencher, o que é normal para uma unidade de anúncios novinha em um app que ainda não está na loja. Sem o log eu teria continuado procurando um erro no meu código.

Limites e privacidade

Uma captura de tela pega o que estiver na tela e um log sem filtro contém linhas de outros apps. Se o celular é compartilhado, como o meu com outro projeto, primeiro abro só o meu app e filtro o log pelo nome do processo. A ferramenta funciona sobre a confiança que você dá ao computador, então aceite o aviso de confiança apenas em máquinas suas.

Perguntas frequentes

Posso tirar capturas de tela de um iPhone no Windows?

Sim. Com o driver Apple Devices e a ferramenta pymobiledevice3 você monta uma vez a imagem de disco de desenvolvedor e depois salva capturas pela linha de comando.

Preciso de um Mac ou do Xcode para isso?

Não. O driver vem do app Apple Devices e a ferramenta é um pacote Python, então um notebook com Windows basta.

Por que a ferramenta diz que não consegue conectar ao usbmux?

O driver USB da Apple ainda não estava em execução. Abra o app Apple Devices uma vez com o celular conectado e confiável e tente de novo.

Como leio apenas o log do meu próprio app?

Use syslog live com a opção de nome do processo, escreva a saída em um arquivo e procure suas mensagens marcadas.

Mais do blog