Destinos binários e XCFrameworks
Distribua código fechado como XCFramework e consuma-o como um destino binário.
Destinos binários e XCFrameworks é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.
O que é um Destino Binário?
Um destino binário distribui um framework pré-compilado, o XCFramework, em vez do código-fonte, protegendo implementações proprietárias.
// Package.swift:
.binaryTarget(
name: "ClosedSDK",
path: "Frameworks/ClosedSDK.xcframework"
)O que é um XCFramework?
Um XCFramework agrupa várias fatias de plataforma (iOS, macOS e simulador) em um único arquivo compactado distribuível.
// XCFramework structure:
// ClosedSDK.xcframework/
// ├── ios-arm64/
// ├── ios-arm64_x86_64-simulator/
// └── macos-arm64_x86_64/Criando um XCFramework
Compile arquivos para cada plataforma e combine-os com xcodebuild -create-xcframework.
xcodebuild archive -scheme MySDK -destination "generic/platform=iOS" -archivePath ios.xcarchive SKIP_INSTALL=NO
xcodebuild archive -scheme MySDK -destination "generic/platform=iOS Simulator" -archivePath sim.xcarchive SKIP_INSTALL=NO
xcodebuild -create-xcframework \
-framework ios.xcarchive/Products/Library/Frameworks/MySDK.framework \
-framework sim.xcarchive/Products/Library/Frameworks/MySDK.framework \
-output MySDK.xcframeworkTarget binário remoto com soma de verificação
Faça referência a um arquivo ZIP de XCFramework hospedado remotamente, com sua soma de verificação SHA-256 para verificar a integridade.
.binaryTarget(
name: "ClosedSDK",
url: "https://cdn.example.com/ClosedSDK-1.0.0.xcframework.zip",
checksum: "abc123def456..."
)Calculando a soma de verificação
Use swift package compute-checksum para gerar a soma de verificação SHA-256 do arquivo ZIP.
swift package compute-checksum ClosedSDK-1.0.0.xcframework.zip
# Outputs: abc123def456...Usando targets binários no aplicativo
Adicione o target binário como uma dependência na lista dependencies de outro target, assim como faria com um target de código-fonte.
.target(
name: "MyApp",
dependencies: [
.target(name: "ClosedSDK")
]
)Importando o XCFramework
Importe o módulo no código Swift exatamente como qualquer outra importação.
import ClosedSDK
let result = ClosedSDK.ProcessData(input: myData)Requisitos do manifesto de privacidade
A Apple exige que os XCFrameworks distribuídos na App Store incluam um manifesto PrivacyInfo.xcprivacy listando as interfaces de programação utilizadas.
// ClosedSDK.xcframework/
// ├── ios-arm64/ClosedSDK.framework/
// │ └── PrivacyInfo.xcprivacy
// └── ...Compilações Debug e Release
Ao consumir um XCFramework, não é possível percorrer o código-fonte no depurador — só é possível ver símbolos. Arquivos dSYM podem ser incluídos para a simbolização de falhas.
// Distribute dSYMs alongside XCFramework for crash reporting:
// ClosedSDK-1.0.0.xcframework.zip
// ClosedSDK-1.0.0.dSYM.zipVersionando XCFrameworks
Use o versionamento semântico no nome do arquivo e na versão do pacote SPM para garantir que os consumidores possam fixar versões compatíveis.
// ClosedSDK-1.2.0.xcframework.zip
// In Package.swift:
// .package(url: "...", from: "1.2.0")XCFramework versus pacotes de código-fonte
Use XCFramework para código proprietário, SDKs pré-compilados grandes ou wrappers C/C++. Use pacotes de código-fonte para código Swift de código aberto.
// XCFramework: proprietary analytics SDK, vendor-provided libraries
// Source: open-source Alamofire, SwiftUI componentsVerificação rápida
Por que uma soma de verificação é incluída ao declarar um target binário remoto em Package.swift?
Recapitulação da lição
Targets binários distribuem XCFrameworks pré-compilados sem código-fonte. Compile com xcodebuild -create-xcframework, hospede o arquivo ZIP, calcule sua soma de verificação com swift package compute-checksum e declare-o em Package.swift. Inclua um PrivacyInfo.xcprivacy para o envio à App Store.
Perguntas Frequentes
A aula “Destinos binários e XCFrameworks” é grátis?
Sim — o texto completo de “Destinos binários e XCFrameworks” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.
O que vou aprender em “Destinos binários e XCFrameworks”?
Distribua código fechado como XCFramework e consuma-o como um destino binário. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Swift Academy?
Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Destinos binários e XCFrameworks”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Swift Academy?
Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Package.swift: destinos, produtos e dependências
- Pacotes locais e módulos de funcionalidades
- Destinos binários e XCFrameworks
- Versionamento, resolução de conflitos e plugins do Swift