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:
Paul Nothaft
2026-09-02 14:25:28 +02:00
parent 12bc9e4220
commit e250b6c5e1
2 changed files with 20 additions and 12 deletions
@@ -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) {