Erweiterung wurde ohne Programm gebaut - Quelle hing in keiner Sources-Phase
An der fertigen .ipa gemessen: DataMetric360Share.appex enthielt nur Info.plist, Signatur und Profil - keine ausfuehrbare Datei, obwohl CFBundleExecutable eine versprach. Xcode meldet dabei nichts, der Bau gilt als erfolgreich. Das Teilen-Blatt haette schlicht nicht funktioniert. Ursache: addSourceFile() legt die Datei nur in die uebergebene Gruppe, wenn man ihm eine mitgibt - an eine Sources-Phase haengt es sie dann nicht. Der PBXBuildFile-Eintrag existierte, war aber verwaist, und alle Sources-Phasen des Ziels blieben leer. Die Quelle wird jetzt direkt beim Anlegen der Sources-Phase uebergeben. Belegt am neu erzeugten Projekt: zwei Sources-Phasen, die der App mit AppDelegate/SceneDelegate, die der Erweiterung mit ShareViewController.
This commit is contained in:
@@ -139,12 +139,26 @@ try {
|
|||||||
|
|
||||||
// Eigene Build-Phasen: ohne sie hat das Ziel keine Quelldateien und keine
|
// Eigene Build-Phasen: ohne sie hat das Ziel keine Quelldateien und keine
|
||||||
// Ressourcen, und Xcode baut ein leeres Bündel.
|
// Ressourcen, und Xcode baut ein leeres Bündel.
|
||||||
projekt.addBuildPhase([], "PBXSourcesBuildPhase", "Sources", ziel.uuid)
|
//
|
||||||
|
// Die Quelle gehoert hier hinein und nicht in ein spaeteres addSourceFile:
|
||||||
|
// reicht man diesem eine Gruppe mit, legt es die Datei nur in die Gruppe
|
||||||
|
// (Navigator) und haengt sie an keine Sources-Phase. Das Ergebnis war ein
|
||||||
|
// .appex ganz ohne Programm - nur Info.plist und Signatur, obwohl
|
||||||
|
// CFBundleExecutable eines versprach (2026-09-02 an der fertigen .ipa
|
||||||
|
// gemessen). Xcode meldet dabei nichts; der Bau gilt als erfolgreich.
|
||||||
|
projekt.addBuildPhase(
|
||||||
|
["ShareViewController.swift"],
|
||||||
|
"PBXSourcesBuildPhase",
|
||||||
|
"Sources",
|
||||||
|
ziel.uuid,
|
||||||
|
)
|
||||||
projekt.addBuildPhase([], "PBXResourcesBuildPhase", "Resources", ziel.uuid)
|
projekt.addBuildPhase([], "PBXResourcesBuildPhase", "Resources", ziel.uuid)
|
||||||
projekt.addBuildPhase([], "PBXFrameworksBuildPhase", "Frameworks", ziel.uuid)
|
projekt.addBuildPhase([], "PBXFrameworksBuildPhase", "Frameworks", ziel.uuid)
|
||||||
|
|
||||||
|
// Nur zur Anzeige in Xcode. Die Quelle ist oben bereits der Sources-Phase
|
||||||
|
// zugeordnet und steht deshalb hier nicht noch einmal.
|
||||||
const gruppe = projekt.addPbxGroup(
|
const gruppe = projekt.addPbxGroup(
|
||||||
["ShareViewController.swift", "Info.plist", `${ZIEL_NAME}.entitlements`],
|
["Info.plist", `${ZIEL_NAME}.entitlements`],
|
||||||
ZIEL_NAME,
|
ZIEL_NAME,
|
||||||
ZIEL_NAME,
|
ZIEL_NAME,
|
||||||
)
|
)
|
||||||
@@ -154,8 +168,6 @@ try {
|
|||||||
)
|
)
|
||||||
if (wurzel) projekt.addToPbxGroup(gruppe.uuid, wurzel)
|
if (wurzel) projekt.addToPbxGroup(gruppe.uuid, wurzel)
|
||||||
|
|
||||||
projekt.addSourceFile("ShareViewController.swift", { target: ziel.uuid }, gruppe.uuid)
|
|
||||||
|
|
||||||
// Einstellungen, die `addTarget` nicht selbst setzt.
|
// Einstellungen, die `addTarget` nicht selbst setzt.
|
||||||
const konfigs = projekt.pbxXCBuildConfigurationSection()
|
const konfigs = projekt.pbxXCBuildConfigurationSection()
|
||||||
for (const schluessel of Object.keys(konfigs)) {
|
for (const schluessel of Object.keys(konfigs)) {
|
||||||
|
|||||||
Reference in New Issue
Block a user