IPA (iOS App Store Package) é um formato de arquivo de arquivo para distribuir aplicações no iOS. Cada aplicação que chega à App Store passa pelo formato IPA: o desenvolvedor compila o projeto, assina e envia o IPA para o App Store Connect. De acordo com Apple Developer Documentation, 2026, o formato IPA é baseado em ZIP e contém um arquivo Mach-O executável, recursos e metadados de assinatura.
Principais pontos
IPA (iOS App Store Package) é um formato de pacote para distribuir aplicações na plataforma Apple. Como o APK, o IPA é tecnicamente um arquivo ZIP, mas com sua própria estrutura ditada pelos requisitos de segurança e assinatura do iOS.
O formato IPA surgiu junto com o iPhone OS 2.0 em 2008 e a App Store. Foi baseado no formato de pacote .app do macOS, empacotado em ZIP para reduzir o tamanho durante a transmissão. Desde então, a estrutura do IPA não sofreu mudanças drásticas — apenas os esquemas de assinatura e metadados evoluíram.
App Store — o canal principal. Distribuição Ad-hoc — para testes num número limitado de dispositivos (até 100). Distribuição Enterprise — para aplicações corporativas sem publicar na loja. Os desenvolvedores também usam IPA para testes em dispositivos reais através do Xcode.
A estrutura interna de um IPA é um arquivo ZIP contendo uma pasta Payload com o pacote .app e metadados.
| Ficheiro/Diretório | Finalidade |
|---|---|
| Payload/ | Pasta raiz com o pacote .app |
| Payload/App.app/ | Pacote da aplicação: ficheiro executável, recursos, nib/storyboard |
| Payload/App.app/Info.plist | Metadados: bundle ID, versões, permissões |
| Payload/App.app/embedded.mobileprovision | Provisioning Profile para instalação |
| iTunesMetadata.plist | Metadados do iTunes (opcional) |
| META-INF/ | Assinaturas e hashes para verificação |
Dentro da pasta Payload encontra-se o pacote da aplicação com extensão .app. Isto não é um ficheiro, mas um diretório que o iOS reconhece como uma aplicação. No seu interior: o ficheiro executável Mach-O (o nome corresponde ao nome do pacote), Info.plist, recursos, imagens e strings localizadas.
O código fonte em Swift ou Objective-C é compilado em código máquina no formato Mach-O (Mach Object). O ficheiro contém segmentos __TEXT (código), __DATA (dados) e __LINKEDIT (metadados de ligação). IPAs modernos contêm apenas a arquitetura arm64 de 64 bits.
Xcode automatiza a compilação do IPA: desde a compilação do código fonte até à criação de um arquivo assinado pronto para enviar ao App Store Connect.
Debug — para desenvolvimento, sem otimizações. Release — para publicação, com otimizações do compilador. Cada esquema define flags de compilação, assinatura de código e entitlements. O Xcode cria um Arquivo (Archive) através de Product → Archive.
// Info.plist — metadados básicos da aplicação
<key>CFBundleName</key>
<string>MyApp</string>
<key>CFBundleIdentifier</key>
<string>com.example.myapp</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
O Xcode compila cada ficheiro .swift ou .m num ficheiro objeto (.o), depois liga-os num único binário Mach-O. Os recursos (imagens, XIB, storyboard) são processados separadamente: os storyboards são compilados para o formato binário .storyboardc, as imagens são otimizadas no Asset Catalog (.car).
Assinatura é o aspeto mais complexo de um IPA. A Apple exige uma assinatura digital para qualquer aplicação executada num dispositivo real. O sistema verifica o certificado do desenvolvedor, os entitlements e a conformidade do Provisioning Profile.
Certificate (Development ou Distribution) — certifica a identidade do desenvolvedor. Provisioning Profile — liga o certificado, o bundle ID e a lista de dispositivos permitidos (para ad-hoc). Entitlements — permissões da aplicação (notificações push, iCloud, App Groups).
O Xcode assina cada biblioteca e framework dentro do pacote .app, depois assina o próprio pacote. O IPA final é assinado ao nível do arquivo ZIP. A Apple verifica todos os níveis de assinatura durante a instalação. O iOS não executa a aplicação se pelo menos um componente tiver uma assinatura inválida.
// Verificação de assinatura através do Security framework
import Security
func checkSignature() -> Bool {
let url = Bundle.main.bundleURL
var staticCode: SecStaticCode?
guard SecStaticCodeCreateWithPath(
url as CFURL,
[], &staticCode
) == errSecSuccess else {
return false
}
return true
}
App Store Connect é a plataforma da Apple para gerir a publicação de aplicações. O envio do IPA é feito através do Xcode Organizer, Transporter ou da linha de comandos com xcrun altool.
Depois de criar um arquivo, o Xcode oferece Distribute App com uma escolha de método: App Store Connect, Ad-hoc, Enterprise ou Development. Ao selecionar App Store Connect, o desenvolvedor especifica a equipa e confirma o envio. O Xcode verifica a assinatura, envia o IPA para os servidores da Apple e devolve o estado do processamento.
Para CI/CD utiliza-se xcrun altool ou o mais recente notarytool. A Apple exige notarização para aplicações macOS; para iOS este passo é opcional mas recomendado. xcodebuild -exportArchive cria um IPA assinado pronto para enviar.
Apple verifica cada IPA quanto a código malicioso, APIs privadas e conformidade com as App Store Review Guidelines. O processo de revisão demora de 1 hora a 2 dias.
Ao enviar um IPA para o App Store Connect, a Apple aplica App Thinning — uma tecnologia que otimiza o binário para dispositivos específicos. Slicing remove recursos para resoluções e arquiteturas não suportadas. On-Demand Resources permite carregar partes da aplicação (níveis de jogo, vídeos) apenas a pedido do utilizador. Bitcode é uma representação intermédia que a Apple pode recompilar para novas arquiteturas sem envolvimento do desenvolvedor.
App Store também verifica a conformidade do IPA com os requisitos de Sandbox: a aplicação não deve aceder a dados de outras aplicações, ao sistema de ficheiros fora do seu contentor ou a funções de hardware sem permissão explícita do utilizador.
TestFlight é o serviço oficial da Apple para testes beta de aplicações. O desenvolvedor envia o IPA para o App Store Connect e convida testadores por email ou através de um link público.
Internal Testing — até 100 membros da equipa do desenvolvedor. Não requer revisão da Apple. External Testing — até 10 000 testadores, requer aprovação na Beta App Review. O TestFlight distribui automaticamente as compilações aos testadores e recolhe análises.
Uma compilação está disponível para testes durante 90 dias após o envio. O TestFlight suporta até 100 compilações ativas simultaneamente. Cada testador pode instalar até 30 aplicações de cada vez. Crashlytics integra-se com o TestFlight para recolher relatórios de falhas e erros não fatais.
A compilação de IPA num ambiente de CI requer um runner macOS. GitHub Actions, GitLab CI e Bitrise fornecem ambientes macOS para compilações iOS. A lane `build_app` do Fastlane automatiza todo o ciclo: arquivação, assinatura, exportação de IPA e envio para o TestFlight. Para gestão de certificados e perfis, utiliza-se Match — uma ferramenta do Fastlane que armazena assinaturas num repositório Git encriptado.
Os desenvolvedores encontram vários erros característicos ao compilar e assinar IPA. A maioria está relacionada com configuração incorreta de certificados e perfis.
O Xcode não encontra um Provisioning Profile que corresponda ao bundle ID e ao certificado. Solução — descarregar perfis atuais em Xcode Accounts → Download Manual Profiles ou usar Automatic Signing.
Este erro ocorre ao enviar um IPA com uma arquitetura inválida. IPAs modernos devem conter apenas arm64. A presença de i386 ou x86_64 no binário causa rejeição. Solução — verificar as arquiteturas em Build Settings e excluir arquiteturas de simulador.
O IPA não contém a estrutura correta Payload/App.app. Apple espera uma hierarquia precisa. Solução — verificar que o arquivo inclui a pasta Payload com um pacote .app, não uma lista plana de ficheiros.
Para distribuição empresarial, utiliza-se o programa Enterprise da Apple ($299/ano). O IPA é assinado com um certificado Enterprise e pode ser instalado em qualquer dispositivo da empresa sem limite de quantidade. A distribuição Ad-hoc está limitada a 100 dispositivos por conta de desenvolvedor ($99/ano). Sistemas MDM (Mobile Device Management) como Jamf e Microsoft Intune suportam instalação em massa de IPAs Enterprise.
Perguntas frequentes
IPA usa o formato executável Mach-O em vez de DEX, requer um Provisioning Profile para instalação e passa por uma revisão rigorosa da App Store. O APK, ao contrário do IPA, pode ser instalado diretamente sem intermediários (sideloading).
Não, a compilação de IPA requer Xcode e ferramentas da Apple, que estão disponíveis apenas no macOS. Alternativas: servidores macOS remotos (Mac mini, AWS Mac) ou serviços de CI na nuvem (GitHub Actions com runner macOS).
Uma aplicação simples — 5–30 MB. Uma aplicação de complexidade média — 30–150 MB. Jogos podem atingir 4 GB. A Apple limita o tamanho de descarga por rede móvel a 200 MB, mas o utilizador pode descarregar via Wi-Fi.
Para instalação ad-hoc, utiliza-se Xcode ou Apple Configurator. As aplicações Enterprise são distribuídas através de um servidor interno com manifest.plist. Um utilizador normal não pode instalar um IPA sem jailbreak ou TestFlight.
Fat IPA contém múltiplas arquiteturas (arm64 + x86_64) para compilações universais. Thin IPA contém apenas uma arquitetura para um dispositivo específico. A Apple aceita apenas thin IPA para publicação — binários fat são rejeitados.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também