Targets binarios y XCFrameworks
Distribuya código de fuente cerrada como XCFramework y consúmalo como target binario.
Targets binarios y XCFrameworks es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.
¿Qué es un destino binario?
Un destino binario distribuye un framework precompilado (XCFramework) en lugar del código fuente, lo que protege las implementaciones propietarias.
// Package.swift:
.binaryTarget(
name: "ClosedSDK",
path: "Frameworks/ClosedSDK.xcframework"
)¿Qué es un XCFramework?
Un XCFramework agrupa varias variantes de plataforma (iOS, macOS y simulador) en un único archivo distribuible.
// XCFramework structure:
// ClosedSDK.xcframework/
// ├── ios-arm64/
// ├── ios-arm64_x86_64-simulator/
// └── macos-arm64_x86_64/Crear un XCFramework
Compile un archivo para cada plataforma y combínelos con 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.xcframeworkDestino binario remoto con suma de comprobación
Haga referencia a un archivo zip de XCFramework alojado de forma remota junto con su suma de comprobación SHA-256 para verificar su integridad.
.binaryTarget(
name: "ClosedSDK",
url: "https://cdn.example.com/ClosedSDK-1.0.0.xcframework.zip",
checksum: "abc123def456..."
)Calcular la suma de comprobación
Use swift package compute-checksum para generar la suma de comprobación SHA-256 del archivo zip.
swift package compute-checksum ClosedSDK-1.0.0.xcframework.zip
# Outputs: abc123def456...Usar destinos binarios en la app
Añada el destino binario como dependencia en la lista dependencies de otro destino, igual que haría con un destino de código fuente.
.target(
name: "MyApp",
dependencies: [
.target(name: "ClosedSDK")
]
)Importar el XCFramework
Importe el módulo en código Swift exactamente igual que cualquier otra importación.
import ClosedSDK
let result = ClosedSDK.ProcessData(input: myData)Requisitos del manifiesto de privacidad
Apple exige que los XCFramework distribuidos en App Store incluyan un manifiesto PrivacyInfo.xcprivacy con las API utilizadas.
// ClosedSDK.xcframework/
// ├── ios-arm64/ClosedSDK.framework/
// │ └── PrivacyInfo.xcprivacy
// └── ...Compilaciones Debug y Release
Al consumir un XCFramework, no puede recorrer el código fuente paso a paso en el depurador: solo verá los símbolos. Puede incluir archivos dSYM para simbolizar los fallos.
// Distribute dSYMs alongside XCFramework for crash reporting:
// ClosedSDK-1.0.0.xcframework.zip
// ClosedSDK-1.0.0.dSYM.zipVersionado de XCFrameworks
Use el versionado semántico en el nombre del archivo y en la versión del paquete de SPM para que los consumidores puedan fijar versiones compatibles.
// ClosedSDK-1.2.0.xcframework.zip
// In Package.swift:
// .package(url: "...", from: "1.2.0")XCFramework frente a paquetes de código fuente
Use XCFramework para código propietario, SDK grandes precompilados o envoltorios de C/C++. Use paquetes de código fuente para código Swift de código abierto.
// XCFramework: proprietary analytics SDK, vendor-provided libraries
// Source: open-source Alamofire, SwiftUI componentsComprobación rápida
¿Por qué se incluye una suma de comprobación al declarar un destino binario remoto en Package.swift?
Resumen de la lección
Los destinos binarios distribuyen XCFrameworks precompilados sin código fuente. Compile con xcodebuild -create-xcframework, aloje el archivo zip, calcule su suma de comprobación con swift package compute-checksum y declárelo en Package.swift. Incluya un PrivacyInfo.xcprivacy para enviar la app a App Store.
Preguntas frecuentes
¿La lección «Targets binarios y XCFrameworks» es gratis?
Sí — el texto completo de «Targets binarios y XCFrameworks» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Targets binarios y XCFrameworks»?
Distribuya código de fuente cerrada como XCFramework y consúmalo como target binario. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Swift Academy?
No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Targets binarios y XCFrameworks»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Swift Academy?
Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Package.swift: targets, productos y dependencias
- Paquetes locales y módulos de funcionalidades
- Targets binarios y XCFrameworks
- Versionado, resolución de conflictos y plugins de Swift