Guia

Publique um app de iOS na App Store sem ter um Mac

Você pode publicar um app de iOS sem ter um Mac. Mas não pode fazer isso sem o macOS. O build e a assinatura do app precisam do Xcode. Quase todo o resto acontece em um navegador ou no seu iPhone. Um Mac alugado ou um runner de CI cobre a única etapa que precisa do macOS.

O que a Apple exige em outubro de 2026

  • Uma assinatura paga. O Apple Developer Program custa 99 USD por ano de assinatura, segundo a página de inscrição da Apple. Organizações sem fins lucrativos, escolas e órgãos públicos podem pedir isenção da taxa.
  • Um Xcode recente. Desde 28 de abril de 2026, os envios precisam ser feitos com Xcode 26 ou mais recente e um SDK do iOS 26. Isso está na página de próximos requisitos da Apple.
  • Um macOS recente. O Xcode 26.6 precisa do macOS Tahoe 26.2 ou mais recente, segundo os requisitos de sistema do Xcode da Apple.

Então o build acontece em um Mac. A única pergunta é de quem é o Mac.

O que você pode fazer no Windows ou no Linux

  • Inscrever-se no programa pela web ou pelo app Apple Developer.
  • Criar o registro do app no App Store Connect.
  • Criar uma chave de API do App Store Connect (passos abaixo).
  • Adicionar testadores, escrever a página da loja e enviar para revisão.
  • Enviar um build pronto. A ferramenta de linha de comando Transporter da Apple funciona no Windows 11 e no Red Hat Enterprise Linux. Nesses sistemas, ela precisa do AppStoreInfo.plist que o Xcode gera na exportação. Então o envio pode rodar no seu PC, mas o arquivo ainda vem de um Mac.

Crie uma chave de API primeiro

Uma chave de API deixa as ferramentas no Mac falarem com a Apple. Não é preciso senha nem confirmação de dois fatores. Os passos da Apple para uma chave de equipe:

  • No App Store Connect, abra Users and Access (Usuários e Acesso) e depois Integrations.
  • Escolha App Store Connect API e depois a aba Team Keys.
  • Clique em Generate API Key, dê um nome, escolha uma função e gere a chave.
  • Baixe o arquivo .p8. A Apple deixa baixar uma única vez.

Você precisa da função Admin para criar chaves de equipe. Anote o Key ID e o Issuer ID que aparecem nessa página. Mantenha o .p8 fora do seu repositório.

Assinatura sem um keychain seu

A assinatura precisa de um certificado de distribuição e de um perfil de provisionamento. Há dois jeitos de ter os dois em um Mac alugado.

Assinatura automática. O xcodebuild aceita a chave de API. Com a opção allowProvisioningUpdates, o texto de ajuda dele diz que ele cria e atualiza perfis, app IDs e certificados para alvos com assinatura automática. A Apple também oferece certificados de distribuição gerenciados na nuvem. A Apple guarda esses certificados, então nenhuma chave privada fica na máquina alugada.

Assinatura manual. Crie uma solicitação de assinatura de certificado com o Acesso às Chaves no Mac alugado. Depois crie um certificado Apple Distribution e um perfil App Store em Certificates, Identifiers and Profiles. Apague o keychain antes de devolver o Mac.

Build e envio a partir do Mac na nuvem

Gere o archive do app. Troque os nomes, o key ID e o issuer ID pelos seus.

xcodebuild -workspace MyApp.xcworkspace -scheme MyApp \
  -configuration Release -destination 'generic/platform=iOS' \
  -archivePath build/MyApp.xcarchive archive \
  -allowProvisioningUpdates \
  -authenticationKeyPath ~/private_keys/AuthKey_ABC123DEF4.p8 \
  -authenticationKeyID ABC123DEF4 \
  -authenticationKeyIssuerID YOUR-ISSUER-ID

Depois exporte. Com destination definido como upload, a exportação manda o build direto para o App Store Connect. O nome de método app-store-connect substituiu o antigo valor app-store.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>method</key><string>app-store-connect</string>
  <key>destination</key><string>upload</string>
  <key>signingStyle</key><string>automatic</string>
  <key>teamID</key><string>YOURTEAMID</string>
</dict>
</plist>
xcodebuild -exportArchive -archivePath build/MyApp.xcarchive \
  -exportOptionsPlist ExportOptions.plist -exportPath build/export \
  -allowProvisioningUpdates \
  -authenticationKeyPath ~/private_keys/AuthKey_ABC123DEF4.p8 \
  -authenticationKeyID ABC123DEF4 \
  -authenticationKeyIssuerID YOUR-ISSUER-ID

Prefere uma etapa de envio separada? Defina destination como export e use o altool. Ele encontra o arquivo da chave em ~/private_keys pelo ID.

xcrun altool --upload-package build/export/MyApp.ipa \
  --api-key ABC123DEF4 --api-issuer YOUR-ISSUER-ID

Quem usa fastlane pode fazer o mesmo com duas ações da documentação dele: app_store_connect_api_key carrega a chave, e pilot envia para o TestFlight.

Conferimos cada opção acima com a saída de ajuda do xcodebuild e do altool no Xcode 26.6. Não rodamos um envio assinado com estas linhas exatas. A configuração de assinatura do seu projeto decide os detalhes.

Números de versão e de build

A Apple associa cada envio ao seu app pelo bundle ID e pelo número de versão. O texto do build identifica cada build, então ele precisa ser único. Aumente o número do build a cada envio. No CI, o número da execução é uma boa fonte para ele. Use o número de versão para o que os usuários veem na loja.

TestFlight no seu iPhone

A Apple processa cada envio e manda um e-mail quando ele está pronto. Depois o resto acontece no App Store Connect e no celular. Segundo a visão geral do TestFlight da Apple:

  • Até 100 testadores internos da sua equipe no App Store Connect.
  • Até 10.000 testadores externos por e-mail ou link público.
  • O primeiro build para testadores externos passa pela App Review.
  • Cada build pode ser testado por até 90 dias.

Os testadores instalam o app gratuito TestFlight e aceitam o convite. Você não precisa de um Mac para nada disso. Os screenshots da loja são fáceis de tirar no Simulador do Mac alugado.

Um dia basta para uma versão

A maioria das etapas acima acontece uma vez só. Você cria a chave de API, configura a assinatura, gera o archive e envia. Se você publica algumas vezes por ano, não precisa de um Mac todo mês. Precisa de um no dia da publicação.

Um passe diário da MacRun dá a você um Mac mini M6 dedicado com Xcode 27.1 por 24 horas, por $15. Uma semana custa $59, o que deixa tempo para o TestFlight e para uma correção depois da revisão. Você paga uma vez. Nada se renova, e o Mac é apagado quando o tempo acaba. Copie os seus arquivos de assinatura antes disso.

Quem não deve alugar um Mac para isso

No Expo, o EAS Build e o EAS Submit fazem o build e o envio na nuvem do Expo. Se você publica duas vezes por ano, um runner de CI hospedado custa centavos por build. Leia CI/CD de iOS com GitHub Actions para essa configuração. A MacRun não oferece assinatura de código gerenciada. Os certificados e as chaves são seus.

Um Mac alugado serve quando você publica com frequência. Também serve quando você precisa da tela do Xcode para corrigir a assinatura à mão. Para uma versão, um dia ou uma semana basta. Os nossos planos M6 estão na página de preços.

Perguntas frequentes

Dá para publicar um app de iOS sem Mac?

+

Sim, se você conseguir acessar um macOS em algum lugar. O build e a assinatura precisam do Xcode em um Mac, que pode ser alugado ou na nuvem. A inscrição, o App Store Connect, o TestFlight e a revisão funcionam pelo navegador ou pelo iPhone.

Posso enviar um .ipa para o App Store Connect pelo Windows?

+

A ferramenta de linha de comando Transporter da Apple funciona no Windows 11 e no Red Hat Enterprise Linux. Nesses sistemas, ela precisa do AppStoreInfo.plist que o Xcode exporta com o build. Então o .ipa ainda precisa ser gerado em um Mac.

Qual Xcode preciso para enviar em 2026?

+

Desde 28 de abril de 2026, a Apple exige que os apps enviados ao App Store Connect sejam compilados com Xcode 26 ou mais recente, usando um SDK do iOS 26. O Xcode 26.6 roda no macOS Tahoe 26.2 ou mais recente.

Quanto custa publicar na App Store?

+

O Apple Developer Program custa 99 USD por ano de assinatura. Existem isenções da taxa para organizações sem fins lucrativos, escolas e órgãos públicos elegíveis. O tempo de Mac para o build é à parte, de centavos por build em CI hospedado a $15 pelo aluguel de um Mac por um dia.

Guias relacionados