diff --git a/companion-app/docs/SHARE_EXTENSION.md b/companion-app/docs/SHARE_EXTENSION.md index 095fe1b..8eb42cc 100644 --- a/companion-app/docs/SHARE_EXTENSION.md +++ b/companion-app/docs/SHARE_EXTENSION.md @@ -79,9 +79,16 @@ Archivieren. ## Wenn das Skript abbricht `ios-teilen-einrichten.mjs` bearbeitet die `project.pbxproj` über das -npm-Paket `xcode`. **Das ist auf keinem Mac erprobt** — geschrieben ohne -Zugriff auf macOS. Bricht es ab, ist nichts halb eingerichtet (es bricht vor -dem Schreiben ab), und dasselbe lässt sich in Xcode von Hand erledigen: +npm-Paket `xcode`. **Erstmals auf einem Mac gelaufen am 2026-09-02**; dabei kam +genau ein Fehler heraus, seither behoben: die Erweiterung wurde **zweimal** +eingebettet, weil `addTarget()` für den Typ `app_extension` von sich aus schon +eine Copy-Phase nach `PlugIns` anlegt und das Skript eine zweite hinzufügte. +Xcode quittierte das mit `error: Unexpected duplicate tasks`. Das Anlegen des +Ziels selbst, die Entitlements, das URL-Schema und die Idempotenz funktionierten +auf Anhieb. + +Bricht es ab, ist nichts halb eingerichtet (es bricht vor dem Schreiben ab), und +dasselbe lässt sich in Xcode von Hand erledigen: 1. **File → New → Target… → Share Extension**, Name `DataMetric360Share`, Sprache Swift, „Activate scheme" verneinen. diff --git a/companion-app/scripts/ios-teilen-einrichten.mjs b/companion-app/scripts/ios-teilen-einrichten.mjs index 04d6311..9a118ed 100644 --- a/companion-app/scripts/ios-teilen-einrichten.mjs +++ b/companion-app/scripts/ios-teilen-einrichten.mjs @@ -173,15 +173,16 @@ try { } } - // Erweiterung in die App einbetten - ohne diese Phase liegt sie zwar im - // Projekt, wandert aber nicht mit ins fertige .ipa. - projekt.addBuildPhase( - [`${ZIEL_NAME}.appex`], - "PBXCopyFilesBuildPhase", - "Embed App Extensions", - projekt.getFirstTarget().uuid, - "app_extension", - ) + // Eingebettet wird die Erweiterung bereits von `addTarget`: die Bibliothek + // legt fuer den Typ "app_extension" von sich aus eine Copy-Phase nach + // PlugIns am ersten Ziel an. Hier noch eine zweite anzulegen, hat genau das + // erzeugt, wogegen Xcode sich wehrt (2026-09-02, erster Lauf ueberhaupt auf + // einem Mac): + // error: Unexpected duplicate tasks + // note: Target 'App': ValidateEmbeddedBinary .../DataMetric360Share.appex + // note: Target 'App': ValidateEmbeddedBinary .../DataMetric360Share.appex + // Beide Phasen zeigten auf dieselbe Datei und dasselbe Ziel - die .appex + // waere zweimal an denselben Ort kopiert worden. writeFileSync(pbxPfad, projekt.writeSync(), "utf8") } catch (fehler) {