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
|
||||
// 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([], "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(
|
||||
["ShareViewController.swift", "Info.plist", `${ZIEL_NAME}.entitlements`],
|
||||
["Info.plist", `${ZIEL_NAME}.entitlements`],
|
||||
ZIEL_NAME,
|
||||
ZIEL_NAME,
|
||||
)
|
||||
@@ -154,8 +168,6 @@ try {
|
||||
)
|
||||
if (wurzel) projekt.addToPbxGroup(gruppe.uuid, wurzel)
|
||||
|
||||
projekt.addSourceFile("ShareViewController.swift", { target: ziel.uuid }, gruppe.uuid)
|
||||
|
||||
// Einstellungen, die `addTarget` nicht selbst setzt.
|
||||
const konfigs = projekt.pbxXCBuildConfigurationSection()
|
||||
for (const schluessel of Object.keys(konfigs)) {
|
||||
|
||||
Reference in New Issue
Block a user