Was macht macos-spm-app-packaging?
Scaffold, erstellen und verpacken Sie SwiftPM-basierte macOS-Apps ohne Xcode-Projekt. Verwenden Sie es, wenn Sie ein macOS-App-Layout von Grund auf, SwiftPM-Ziele/Ressourcen, ein benutzerdefiniertes .app-Bundle-Assembly-Skript oder Signierungs-/Notarisierungs-/Appcast-Schritte außerhalb von Xcode benötigen.
Verwendung
- Scaffold: Erstellen Sie die Projektstruktur mit
swift package init --type executable. - Konfigurieren: Bearbeiten Sie
Package.swift, um Ziele, Abhängigkeiten und Ressourcen hinzuzufügen. - Erstellen: Verwenden Sie
swift build, um das Projekt zu kompilieren. - Paketieren: Führen Sie das benutzerdefinierte Assembly-Skript aus, um das
.app-Bundle zu erstellen. - Signieren und Notarisieren: Wenden Sie die Code-Signierung an und reichen Sie die App zur Notarisierung bei Apple ein.
- Appcast aktualisieren: Generieren Sie einen Appcast-Eintrag für Sparkle-basierte Updates.
Beispiel-Assembly-Skript
#!/bin/bash
BUILD_DIR=".build/release"
APP_NAME="MyApp"
APP_BUNDLE="$APP_NAME.app"
# App-Bundle-Struktur erstellen
mkdir -p "$APP_BUNDLE/Contents/MacOS"
mkdir -p "$APP_BUNDLE/Contents/Resources"
# Binärdatei und Ressourcen kopieren
cp "$BUILD_DIR/$APP_NAME" "$APP_BUNDLE/Contents/MacOS/"
cp -r Resources/* "$APP_BUNDLE/Contents/Resources/"
# Info.plist erstellen
cat > "$APP_BUNDLE/Contents/Info.plist" <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleExecutable</key>
<string>$APP_NAME</string>
<key>CFBundleIdentifier</key>
<string>com.example.$APP_NAME</string>
<key>CFBundleName</key>
<string>$APP_NAME</string>
<key>CFBundleVersion</key>
<string>1.0</string>
</dict>
</plist>
EOF
# Code-Signierung
codesign --force --sign "Developer ID Application: Your Name (TEAMID)" "$APP_BUNDLE"
# Notarisierung übermitteln
xcrun notarytool submit "$APP_BUNDLE" --apple-id "[email protected]" --team-id "TEAMID" --password "@keychain:AC_PASSWORD" --wait
# Appcast generieren
generate_appcast "path/to/archives"
Wichtige Hinweise
- Dieses Skill ist optimiert für SwiftPM-basierte macOS-Apps; es erfordert, dass Ihr Projekt mit SwiftPM und nicht mit Xcode verwaltet wird.
- Die Code-Signierung und Notarisierung erfordern gültige Apple-Entwicklerzertifikate und ein aktives Entwicklerkonto.
- Für die Appcast-Generierung ist das Tool
generate_appcasterforderlich, das Teil von Sparkle ist.
Unterstützte Plattformen
- macOS (Zielplattform für die erstellten Apps)
- SwiftPM (Build-System verwendet SwiftPM, nicht Xcode)