Signierte iOS-App gebaut und Luftweg-Installation vorbereitet

Phase 10 Schritt 7 ist damit erledigt. auslieferung/App.ipa, 2,4 MB, Ad-hoc
signiert mit "Apple Distribution: Paul Nothaft", Profil gueltig bis
29.08.2027, genau ein eingetragenes Geraet.

Zwei Annahmen von heute frueh waren falsch und sind korrigiert: die bezahlte
Mitgliedschaft stuft das bestehende Team hoch, statt ein neues anzulegen (die
Kennung bleibt RMACS9VLS4), und der Export als Ad-hoc funktioniert einwandfrei.

Neue Falle festgehalten: beim ersten Signieren fragt der Schluesselbund per
Dialog um Erlaubnis. Bleibt der unbeantwortet, haengt xcodebuild wortlos und
endet mit errSecInternalComponent. Die Diagnose steht in AGENTS.md, weil das
Symptom von sich aus nirgendwohin zeigt.

Neu: scripts/ios-luftweg.sh erzeugt manifest.plist, Installationsseite und
Symbole fuer die Uebertragung ueber die Luft. Es verweigert eine Basis-Adresse
ohne https, weil iOS sonst erst auf dem Telefon still scheitert.

Offen bleibt der Host, der die Dateien ausliefert.
This commit is contained in:
Paul Nothaft
2026-08-29 12:56:42 +02:00
parent fa7253a64c
commit b4d44b2731
6 changed files with 257 additions and 85 deletions
+20 -20
View File
@@ -32,20 +32,12 @@ set -euo pipefail
HIER="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
APP="$(dirname "$HIER")"
# Absichtlich ohne Vorgabewert. Hier stand bis 2026-08-29 die Kennung des
# kostenlosen Personal Teams (RMACS9VLS4). Mit dem Wechsel auf eine bezahlte
# Mitgliedschaft entsteht ein *neues* Team mit eigener Kennung - der alte Wert
# wuerde also still weiter mit dem kostenlosen Team signieren (7-Tage-Ablauf)
# statt mit dem bezahlten. Lieber ein klarer Abbruch als eine App, die nach
# einer Woche wortlos stirbt.
TEAM="${APPLE_TEAM_ID:-}"
if [ -z "$TEAM" ]; then
echo "FEHLER: APPLE_TEAM_ID ist nicht gesetzt." >&2
echo "Die Team-Kennung steht auf developer.apple.com/account unter" >&2
echo "'Membership details' (10 Zeichen, z. B. A1B2C3D4E5). Dann:" >&2
echo " APPLE_TEAM_ID=XXXXXXXXXX bash scripts/ios-signieren.sh" >&2
exit 1
fi
# Dieselbe Kennung wie zu Zeiten des kostenlosen Kontos: die bezahlte
# Mitgliedschaft hat das bestehende Team hochgestuft, statt ein neues
# anzulegen. Zwischenzeitlich stand hier das Gegenteil - widerlegt am
# 2026-08-29 durch das ausgestellte Profil (Team RMACS9VLS4, Laufzeit ein
# Jahr statt sieben Tage). Ueberschreibbar ueber APPLE_TEAM_ID.
TEAM="${APPLE_TEAM_ID:-RMACS9VLS4}"
AUSGABE="$APP/ios/build"
ARCHIV="$AUSGABE/DataMetric360.xcarchive"
@@ -74,15 +66,17 @@ xcodebuild \
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.
# Ad-hoc, nicht development: das ist die von Apple vorgesehene Art fuer die
# Installation ueber die Luft (siehe ios-luftweg.sh) und deckt den Weg per
# Kabel gleich mit ab. Sie verlangt ein Apple-Distribution-Zertifikat, das
# -allowProvisioningUpdates bei Bedarf selbst anlegt - moeglich erst seit der
# bezahlten Mitgliedschaft. Die Signatur laeuft damit ein Jahr.
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>method</key><string>ad-hoc</string>
<key>teamID</key><string>$TEAM</string>
<key>signingStyle</key><string>automatic</string>
<key>stripSwiftSymbols</key><true/>
@@ -97,6 +91,12 @@ xcodebuild -exportArchive \
-exportPath "$AUSGABE" \
-allowProvisioningUpdates
# Die fertige .ipa liegt versioniert unter auslieferung/, weil ios/ gitignored
# ist und das Ergebnis sonst nur auf diesem einen Mac existierte.
mkdir -p "$APP/auslieferung"
cp "$AUSGABE/App.ipa" "$APP/auslieferung/App.ipa"
echo
echo "Fertig: $AUSGABE/App.ipa"
echo "Aufs Geraet: xcrun devicectl device install app --device <UDID> $AUSGABE/App.ipa"
echo "Fertig: $APP/auslieferung/App.ipa"
echo "Ueber die Luft: bash scripts/ios-luftweg.sh https://<host>"
echo "Per Kabel: xcrun devicectl device install app --device <UDID> $APP/auslieferung/App.ipa"