Swift Academy · Lektion

Package.swift: Targets, Produkte und Abhängigkeiten

Verstehen Sie den Aufbau eines Package.swift-Manifests und definieren Sie Bibliotheks- und ausführbare Produkte.

Lektion 1 von 413 Schritte

Package.swift: Targets, Produkte und Abhängigkeiten ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Package.swift im Überblick

Package.swift ist das Manifest für den Swift Package Manager. Es definiert den Paketnamen, die Swift-Version, Targets, Produkte und Abhängigkeiten.

import PackageDescription
let package = Package(
  name: "MyLibrary",
  platforms: [.iOS(.v16), .macOS(.v13)],
  products: [],
  dependencies: [],
  targets: []
)

Targets

Targets sind die grundlegenden Bausteine: .target (Bibliotheks- oder ausführbarer Code) und .testTarget (Testcode).

.target(
  name: "MyFeature",
  dependencies: [],
  path: "Sources/MyFeature"
),
.testTarget(
  name: "MyFeatureTests",
  dependencies: ["MyFeature"],
  path: "Tests/MyFeatureTests"
)

Produkte

Produkte definieren, was ein Paket für seine Nutzer bereitstellt: .library oder .executable.

.library(
  name: "MyFeature",
  targets: ["MyFeature"]
),
.executable(
  name: "MyTool",
  targets: ["MyTool"]
)

Dynamische oder statische Bibliotheken

Geben Sie das Linking mit .dynamic oder .static an. Statisch ist die Standardeinstellung und verursacht weniger Overhead; dynamisch ermöglicht die gemeinsame Nutzung über mehrere Module hinweg.

.library(
  name: "MySDK",
  type: .dynamic,
  targets: ["MySDK"]
)

Externe Abhängigkeiten

Deklarieren Sie Abhängigkeiten von Remote-Paketen mit einer URL und einer Versionsanforderung.

.package(url: "https://github.com/apple/swift-algorithms", from: "1.0.0"),
.package(url: "https://github.com/pointfreeco/swift-composable-architecture", exact: "1.0.0")

Externe Abhängigkeiten in Targets verwenden

Referenzieren Sie Produkte externer Pakete in den Target-Abhängigkeiten mit .product(name:package:).

.target(
  name: "MyApp",
  dependencies: [
    .product(name: "Algorithms", package: "swift-algorithms"),
    .product(name: "ComposableArchitecture", package: "swift-composable-architecture")
  ]
)

Abhängigkeiten von lokalen Paketen

Referenzieren Sie für Monorepo-Konfigurationen oder bei der Weiterentwicklung eines eigenen Pakets ein lokales Paketverzeichnis.

.package(path: "../MySharedLibrary"),

Anforderungen an die Swift-Version

Legen Sie oben in Package.swift die minimale Swift-Tools-Version und im Package-Initializer die Plattformanforderungen fest.

// swift-tools-version: 5.9
import PackageDescription
let package = Package(
  name: "MyPackage",
  platforms: [.iOS(.v17)],
  // ...
)

Ressourcen in Targets

Fügen Sie Nicht-Code-Ressourcen (Bilder, JSON, Lokalisierung) mithilfe des Parameters resources: hinzu.

.target(
  name: "MyFeature",
  resources: [
    .process("Resources"),
    .copy("Fixtures/test_data.json")
  ]
)

Build-Einstellungen und C-Targets

Targets können C-Flags und Swift-Einstellungen konfigurieren, was beim Einbinden von C-Bibliotheken oder bei bedingter Kompilierung nützlich ist.

.target(
  name: "CWrapper",
  cSettings: [.headerSearchPath("include")],
  swiftSettings: [.define("DEBUG", .when(configuration: .debug))]
)

Paketauflösung

Führen Sie swift package resolve aus, um Abhängigkeiten abzurufen. Die aufgelösten Versionen werden in Package.resolved gespeichert.

// Commands:
// swift package resolve      – fetch dependencies
// swift package update       – update to latest compatible versions
// swift build                – build the package
// swift test                 – run tests

Kurze Überprüfung

Welches Element von Package.swift definiert, was das Paket für andere Pakete oder darauf aufbauende Apps bereitstellt?

Zusammenfassung der Lektion

Package.swift: targets sind Baueinheiten, products stellen sie für Nutzer bereit und dependencies referenzieren Remote- oder lokale Pakete. Verwenden Sie .product(name:package:), um externe Targets zu verknüpfen. Übernehmen Sie Package.resolved in die Versionsverwaltung, um die Versionen in Teamprojekten festzuschreiben.

Kostenlos starten

Lerne Swift mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
122
Lektionen
409

Häufig gestellte Fragen

Ist die Lektion „Package.swift: Targets, Produkte und Abhängigkeiten“ kostenlos?

Ja — der vollständige Text von „Package.swift: Targets, Produkte und Abhängigkeiten“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Package.swift: Targets, Produkte und Abhängigkeiten“?

Verstehen Sie den Aufbau eines Package.swift-Manifests und definieren Sie Bibliotheks- und ausführbare Produkte. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Swift Academy zu starten?

Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.

Wie lange dauert die Lektion „Package.swift: Targets, Produkte und Abhängigkeiten“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?

Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Package.swift: Targets, Produkte und Abhängigkeiten
  2. Lokale Pakete und Feature-Module
  3. Binärziele und XCFrameworks
  4. Versionierung, Konfliktauflösung und Swift-Plugins
← Zurück zu Swift Academy