0Pricing
Swift Academy · Leçon

Cibles binaires et XCFrameworks

Distribuer du code propriétaire sous forme de XCFramework et le consommer comme cible binaire.

Cibles binaires et XCFrameworks est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.

Qu’est-ce qu’une cible binaire ?

Une cible binaire distribue un framework précompilé (XCFramework) au lieu du code source, ce qui protège les implémentations propriétaires.

// Package.swift:
.binaryTarget(
  name: "ClosedSDK",
  path: "Frameworks/ClosedSDK.xcframework"
)

Qu’est-ce qu’un XCFramework ?

Un XCFramework regroupe plusieurs variantes de plateformes (iOS, macOS, simulateur) dans une seule archive distribuable.

// XCFramework structure:
// ClosedSDK.xcframework/
// ├── ios-arm64/
// ├── ios-arm64_x86_64-simulator/
// └── macos-arm64_x86_64/

Créer un XCFramework

Créez une archive pour chaque plateforme, puis combinez-les avec 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

Cible binaire distante avec somme de contrôle

Référencez un fichier zip XCFramework hébergé à distance avec sa somme de contrôle SHA-256 afin d’en vérifier l’intégrité.

.binaryTarget(
  name: "ClosedSDK",
  url: "https://cdn.example.com/ClosedSDK-1.0.0.xcframework.zip",
  checksum: "abc123def456..."
)

Calculer la somme de contrôle

Utilisez swift package compute-checksum pour générer la somme de contrôle SHA-256 du fichier zip.

swift package compute-checksum ClosedSDK-1.0.0.xcframework.zip
# Outputs: abc123def456...

Utiliser des cibles binaires dans une application

Ajoutez la cible binaire comme dépendance dans la liste dependencies d’une autre cible, exactement comme pour une cible source.

.target(
  name: "MyApp",
  dependencies: [
    .target(name: "ClosedSDK")
  ]
)

Importer le XCFramework

Importez le module dans le code Swift exactement comme n’importe quel autre module.

import ClosedSDK

let result = ClosedSDK.ProcessData(input: myData)

Exigences du manifeste de confidentialité

Apple exige que les XCFramework distribués sur l’App Store incluent un manifeste PrivacyInfo.xcprivacy répertoriant les API utilisées.

// ClosedSDK.xcframework/
// ├── ios-arm64/ClosedSDK.framework/
// │   └── PrivacyInfo.xcprivacy
// └── ...

Versions de débogage et de mise en production

Lorsque vous utilisez un XCFramework, vous ne pouvez pas parcourir le code source avec le débogueur : vous ne voyez que les symboles. Les fichiers dSYM peuvent être inclus pour symboliquer les rapports de plantage.

// Distribute dSYMs alongside XCFramework for crash reporting:
// ClosedSDK-1.0.0.xcframework.zip
// ClosedSDK-1.0.0.dSYM.zip

Gérer les versions des XCFramework

Utilisez le versionnement sémantique dans le nom du fichier et dans la version du paquet SPM afin que les utilisateurs puissent verrouiller des versions compatibles.

// ClosedSDK-1.2.0.xcframework.zip
// In Package.swift:
// .package(url: "...", from: "1.2.0")

XCFramework ou paquets source

Utilisez un XCFramework pour le code propriétaire, les SDK précompilés volumineux ou les wrappers C/C++. Utilisez des paquets source pour le code Swift open source.

// XCFramework: proprietary analytics SDK, vendor-provided libraries
// Source: open-source Alamofire, SwiftUI components

Vérification rapide

Pourquoi incluez-vous une somme de contrôle lorsque vous déclarez une cible binaire distante dans Package.swift ?

Récapitulatif de la leçon

Les cibles binaires distribuent des XCFramework précompilés sans code source. Construisez-les avec xcodebuild -create-xcframework, hébergez le fichier zip, calculez sa somme de contrôle avec swift package compute-checksum, puis déclarez-le dans Package.swift. Incluez un fichier PrivacyInfo.xcprivacy pour la soumission à l’App Store.

Questions Fréquemment Posées

La leçon « Cibles binaires et XCFrameworks » est-elle gratuite ?

Oui — le texte complet de « Cibles binaires et XCFrameworks » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Cibles binaires et XCFrameworks » ?

Distribuer du code propriétaire sous forme de XCFramework et le consommer comme cible binaire. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Cibles binaires et XCFrameworks » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Package.swift : cibles, produits et dépendances
  2. Packages locaux et modules fonctionnels
  3. Cibles binaires et XCFrameworks
  4. Gestion des versions, résolution des conflits et plugins Swift
← Retour à Swift Academy