iOS-Signierung vorbereiten: Skript, Nachweis des Gerätebaus, offener Punkt
Phase 10 Schritt 7 lässt sich nicht abschließen, aber alles bis zur Signatur ist gebaut und belegt: Simulator- und Gerätebau (arm64, Release) laufen fehlerfrei durch, 146/146 Tests grün, Typecheck sauber. Die Signatur scheitert allein daran, dass dem Entwicklerteam kein Gerät bekannt ist -- Apple erzeugt ein Development-Profil nur für konkrete UDIDs. Kein iPhone angeschlossen, keins je mit diesem Mac gepaart, kein App-Store-Connect-Schlüssel zum Nachtragen. Neu: companion-app/scripts/ios-signieren.sh macht Bauen, Synchronisieren, Signieren und den .ipa-Export zu einem Befehl. Nötig, weil ios/ absichtlich gitignored ist und jede in Xcode geklickte Signatureinstellung beim nächsten npx cap add ios wieder verschwinden würde -- die Team-Kennung braucht eine versionierte Heimat. Bewusst nicht getan: eine unsignierte .ipa als Platzhalter einchecken. Sie wäre nicht installierbar und läge als Binärdatei dauerhaft in der Historie.
This commit is contained in:
Executable
+75
@@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env bash
|
||||
# Baut die native iOS-Huelle und signiert sie zu einer installierbaren .ipa.
|
||||
# Nur auf einem Mac mit Xcode lauffaehig. Siehe ../../UMSETZUNGSPLAN.md Phase 10.
|
||||
#
|
||||
# Warum es dieses Skript gibt: `ios/` ist absichtlich gitignored (aus dem
|
||||
# Webbuendel jederzeit wiederherstellbar). Damit verschwindet aber auch jede
|
||||
# Signatureinstellung, die man in Xcode von Hand setzt, beim naechsten
|
||||
# `npx cap add ios` wieder. Die Team-Kennung gehoert deshalb hierher - in eine
|
||||
# versionierte Datei - und wird dem Build von aussen mitgegeben.
|
||||
#
|
||||
# Voraussetzung, die dieses Skript nicht herstellen kann: das iPhone muss dem
|
||||
# Entwicklerteam bekannt sein. Apple erzeugt ein Development-Profil nur fuer
|
||||
# konkrete Geraete. Also entweder das iPhone per Kabel anschliessen und
|
||||
# vertrauen (Xcode meldet die Geraetekennung dann selbst an), oder die UDID
|
||||
# unter developer.apple.com/account eintragen. Ohne das bricht der Archivschritt
|
||||
# mit "Your team has no devices" ab - das ist kein Fehler im Projekt.
|
||||
set -euo pipefail
|
||||
|
||||
HIER="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
APP="$(dirname "$HIER")"
|
||||
TEAM="${APPLE_TEAM_ID:-RMACS9VLS4}"
|
||||
AUSGABE="$APP/ios/build"
|
||||
ARCHIV="$AUSGABE/DataMetric360.xcarchive"
|
||||
|
||||
cd "$APP"
|
||||
|
||||
echo "==> Webbuendel bauen"
|
||||
npm run build
|
||||
|
||||
echo "==> Native Huelle synchronisieren"
|
||||
if [ ! -d ios ]; then
|
||||
echo "==> ios/ fehlt, wird neu erzeugt"
|
||||
npx cap add ios
|
||||
fi
|
||||
npx cap sync ios
|
||||
|
||||
echo "==> Archiv bauen und signieren (Team $TEAM)"
|
||||
rm -rf "$AUSGABE"
|
||||
mkdir -p "$AUSGABE"
|
||||
xcodebuild \
|
||||
-project ios/App/App.xcodeproj \
|
||||
-scheme App \
|
||||
-configuration Release \
|
||||
-destination 'generic/platform=iOS' \
|
||||
-archivePath "$ARCHIV" \
|
||||
-allowProvisioningUpdates \
|
||||
DEVELOPMENT_TEAM="$TEAM" \
|
||||
archive
|
||||
|
||||
# Die Exportart heisst seit Xcode 16 offiziell "debugging"; "development" ist
|
||||
# weiterhin als Synonym gueltig und funktioniert auch mit aelteren Xcode-
|
||||
# Versionen, deshalb bleibt es hier stehen.
|
||||
cat > "$AUSGABE/ExportOptions.plist" <<PLIST
|
||||
<?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>method</key><string>development</string>
|
||||
<key>teamID</key><string>$TEAM</string>
|
||||
<key>signingStyle</key><string>automatic</string>
|
||||
<key>stripSwiftSymbols</key><true/>
|
||||
</dict>
|
||||
</plist>
|
||||
PLIST
|
||||
|
||||
echo "==> .ipa exportieren"
|
||||
xcodebuild -exportArchive \
|
||||
-archivePath "$ARCHIV" \
|
||||
-exportOptionsPlist "$AUSGABE/ExportOptions.plist" \
|
||||
-exportPath "$AUSGABE" \
|
||||
-allowProvisioningUpdates
|
||||
|
||||
echo
|
||||
echo "Fertig: $AUSGABE/App.ipa"
|
||||
echo "Aufs Geraet: xcrun devicectl device install app --device <UDID> $AUSGABE/App.ipa"
|
||||
Reference in New Issue
Block a user