Share-Erweiterung wurde doppelt eingebettet - eine Copy-Phase zu viel
Erster Lauf des Einrichtungsskripts auf einem Mac. Xcode brach ab mit "error: Unexpected duplicate tasks", zweimal ValidateEmbeddedBinary auf dieselbe DataMetric360Share.appex. Ursache: addTarget() legt fuer den Typ app_extension selbst schon eine Copy-Phase nach PlugIns am ersten Ziel an. Das Skript fuegte danach eine zweite mit demselben Ziel und derselben Datei hinzu. Die explizite Phase entfaellt jetzt; belegt am erzeugten Projekt: genau eine Phase mit dstSubfolderSpec 13 statt zwei. Alles Uebrige des Skripts lief auf Anhieb: Ziel, Entitlements, URL-Schema, Idempotenz.
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user