0e16f68b4b
Der vorige Commit ging von einer bezahlten Mitgliedschaft aus und nannte als
Ausweg, die UDID auf developer.apple.com einzutragen. Das ist falsch.
Xcodes eigener Zwischenspeicher belegt das Gegenteil:
isFreeProvisioningTeam = 1, teamType = "Personal Team". Damit gibt es gar
keine Geräteverwaltung im Portal -- ein Gerät wird ausschließlich dadurch
bekannt, dass es angeschlossen und vertraut ist. Zusätzlich verfallen Profil,
App-ID und Geräteeintrag alle 7 Tage.
Auch die ältere Behauptung weiter oben in AGENTS.md ("Paul has an Apple
Developer Program") ist damit als falsch markiert.
Offen und bewusst als ungeprüft vermerkt: ob -exportArchive mit einem
Personal Team überhaupt eine brauchbare .ipa liefert. Der direkte Weg aufs
angeschlossene Gerät steht als Rückfallebene im Skriptkopf.
90 lines
3.3 KiB
Bash
Executable File
90 lines
3.3 KiB
Bash
Executable File
#!/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
|
|
# per Kabel an diesem Mac haengen und vertraut sein. Apple erzeugt ein
|
|
# Development-Profil nur fuer konkrete Geraete, und dieses Konto ist ein
|
|
# kostenloses Personal Team - da gibt es keine Geraeteverwaltung auf
|
|
# developer.apple.com, das Anmelden der Geraetekennung macht Xcode selbst ueber
|
|
# -allowProvisioningUpdates am angeschlossenen Telefon. Ohne Telefon bricht der
|
|
# Archivschritt mit "Your team has no devices" ab; das ist kein Fehler im
|
|
# Projekt.
|
|
#
|
|
# Ebenfalls Folge des kostenlosen Kontos: Profil, App-ID und Geraeteeintrag
|
|
# verfallen nach 7 Tagen, die App muss dann neu aufgespielt werden.
|
|
#
|
|
# Ungeprueft, weil bisher kein Geraet zur Verfuegung stand: ob der
|
|
# -exportArchive-Schritt mit einem Personal Team ueberhaupt eine brauchbare
|
|
# .ipa liefert. Kostenloses Signieren ist auf "direkt aufs angeschlossene
|
|
# Geraet starten" ausgelegt, nicht auf ein weitergebbares Archiv. Scheitert der
|
|
# Export, ist der direkte Weg der richtige, nicht die Fehlersuche am Export:
|
|
# xcodebuild -project ios/App/App.xcodeproj -scheme App \
|
|
# -destination 'id=<UDID>' -allowProvisioningUpdates \
|
|
# DEVELOPMENT_TEAM=$TEAM install
|
|
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"
|