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
|
## Wenn das Skript abbricht
|
||||||
|
|
||||||
`ios-teilen-einrichten.mjs` bearbeitet die `project.pbxproj` über das
|
`ios-teilen-einrichten.mjs` bearbeitet die `project.pbxproj` über das
|
||||||
npm-Paket `xcode`. **Das ist auf keinem Mac erprobt** — geschrieben ohne
|
npm-Paket `xcode`. **Erstmals auf einem Mac gelaufen am 2026-09-02**; dabei kam
|
||||||
Zugriff auf macOS. Bricht es ab, ist nichts halb eingerichtet (es bricht vor
|
genau ein Fehler heraus, seither behoben: die Erweiterung wurde **zweimal**
|
||||||
dem Schreiben ab), und dasselbe lässt sich in Xcode von Hand erledigen:
|
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`,
|
1. **File → New → Target… → Share Extension**, Name `DataMetric360Share`,
|
||||||
Sprache Swift, „Activate scheme" verneinen.
|
Sprache Swift, „Activate scheme" verneinen.
|
||||||
|
|||||||
@@ -173,15 +173,16 @@ try {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Erweiterung in die App einbetten - ohne diese Phase liegt sie zwar im
|
// Eingebettet wird die Erweiterung bereits von `addTarget`: die Bibliothek
|
||||||
// Projekt, wandert aber nicht mit ins fertige .ipa.
|
// legt fuer den Typ "app_extension" von sich aus eine Copy-Phase nach
|
||||||
projekt.addBuildPhase(
|
// PlugIns am ersten Ziel an. Hier noch eine zweite anzulegen, hat genau das
|
||||||
[`${ZIEL_NAME}.appex`],
|
// erzeugt, wogegen Xcode sich wehrt (2026-09-02, erster Lauf ueberhaupt auf
|
||||||
"PBXCopyFilesBuildPhase",
|
// einem Mac):
|
||||||
"Embed App Extensions",
|
// error: Unexpected duplicate tasks
|
||||||
projekt.getFirstTarget().uuid,
|
// note: Target 'App': ValidateEmbeddedBinary .../DataMetric360Share.appex
|
||||||
"app_extension",
|
// 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")
|
writeFileSync(pbxPfad, projekt.writeSync(), "utf8")
|
||||||
} catch (fehler) {
|
} catch (fehler) {
|
||||||
|
|||||||
Reference in New Issue
Block a user