0Pricing
Swift Academy · Lezione

Target binari e XCFramework

Distribuire codice closed source come XCFramework e utilizzarlo come target binario.

Target binari e XCFramework è una lezione Swift Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Swift Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Swift Academy include 4 lezioni in totale.

Che cos'è un target binario?

Un target binario distribuisce un framework precompilato (XCFramework) invece del codice sorgente, proteggendo le implementazioni proprietarie.

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

Che cos'è un XCFramework?

Un XCFramework raggruppa più sezioni per piattaforma (iOS, macOS, simulatore) in un unico archivio distribuibile.

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

Creazione di un XCFramework

Crei un archivio per ogni piattaforma e li combini 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.xcframework

Target binario remoto con checksum

Faccia riferimento a uno zip XCFramework ospitato in remoto, includendo il relativo checksum SHA-256 per verificarne l'integrità.

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

Calcolo del checksum

Utilizzi swift package compute-checksum per generare il checksum SHA-256 del file zip.

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

Utilizzo dei target binari nell'app

Aggiunga il target binario come dipendenza nell'elenco dependencies di un altro target, proprio come farebbe con un target di codice sorgente.

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

Importazione dell'XCFramework

Importi il modulo nel codice Swift esattamente come qualsiasi altro import.

import ClosedSDK

let result = ClosedSDK.ProcessData(input: myData)

Requisiti del manifesto sulla privacy

Apple richiede che gli XCFramework distribuiti sull'App Store includano un manifesto PrivacyInfo.xcprivacy con l'elenco delle API utilizzate.

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

Build Debug e Release a confronto

Quando utilizza un XCFramework, non può eseguire il debug passo passo del codice sorgente: vede soltanto i simboli. È possibile includere i file dSYM per la simbolicazione dei crash.

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

Versionamento degli XCFramework

Utilizzi il versionamento semantico nel nome del file e nella versione del pacchetto SPM, così chi utilizza il pacchetto può bloccare versioni compatibili.

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

XCFramework e pacchetti con codice sorgente

Utilizzi un XCFramework per codice proprietario, SDK precompilati di grandi dimensioni o wrapper C/C++. Utilizzi pacchetti con codice sorgente per il codice Swift open source.

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

Verifica rapida

Perché si include un checksum quando si dichiara un target binario remoto in Package.swift?

Riepilogo della lezione

I target binari distribuiscono XCFramework precompilati senza codice sorgente. Li crei con xcodebuild -create-xcframework, ospiti lo zip, ne calcoli il checksum con swift package compute-checksum e lo dichiari in Package.swift. Includa un PrivacyInfo.xcprivacy per l'invio sull'App Store.

Domande Frequenti

La lezione «Target binari e XCFramework» è gratuita?

Sì — il testo completo di «Target binari e XCFramework» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Swift Academy, passa a CoddyKit PRO. Il corso Swift Academy include 4 lezioni in totale.

Cosa imparerò in «Target binari e XCFramework»?

Distribuire codice closed source come XCFramework e utilizzarlo come target binario. Eserciti Swift Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Swift Academy?

Non è richiesta alcuna esperienza precedente. Swift Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Target binari e XCFramework»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Swift Academy?

Sì. Ogni lezione Swift Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Package.swift: target, prodotti e dipendenze
  2. Package locali e moduli funzionali
  3. Target binari e XCFramework
  4. Versionamento, risoluzione dei conflitti e Swift Plugin
← Torna a Swift Academy