0Pricing
Swift Academy · Aula

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.xcframework

Target 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.zip

Versionando 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 components

Verificaçã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

  1. Package.swift: destinos, produtos e dependências
  2. Pacotes locais e módulos de funcionalidades
  3. Destinos binários e XCFrameworks
  4. Versionamento, resolução de conflitos e plugins do Swift
← Voltar para Swift Academy