Debugger kann sich wieder anhängen: Neusignieren war überflüssig

Xcode meldete beim Start "Could not attach to pid — ensure that scarriffle has
permission to debug Onyx". Ursache war mein eigener Build-Schritt: er signierte
die App mit Onyx.entitlements neu, und darin fehlt get-task-allow — die
Entitlement, die das Anhängen eines Debuggers überhaupt erlaubt. Xcode setzt sie
im Debug-Build selbst; mein Neusignieren entfernte sie stillschweigend wieder.

Die Reihenfolge im Bauprotokoll zeigt, dass der Schritt gar nicht nötig war:

  CodeSign OnyxHelper           (Zeile  943)
  PhaseScriptExecution          (Zeile 1092)
  CodeSign Onyx.app             (Zeile 1743)

Xcode signiert die App als Letztes, nach dem Skript. Damit repariert es das
Siegel von selbst, das durch das Einbetten des Helfers bricht — mein
Neusignieren war ein Nachbau von etwas, das ohnehin passiert, nur ohne die
Entitlements, die Xcode beilegt.

Der Schritt kopiert jetzt nur noch und signiert ausschließlich den Helfer, der
sein eigenes Siegel braucht. Nachgeprüft: App-Siegel gültig, get-task-allow im
Debug vorhanden, Helfer trägt den richtigen Bezeichner und weiterhin keine
Entitlements.

Dass get-task-allow auch im Release-Build steht, ist kein Fehler: Xcode legt sie
bei jedem mit einem Development-Zertifikat signierten Build bei. Mit einem
Developer-ID-Zertifikat entfällt sie — das kommt in Phase 9 mit der
Notarisierung.
This commit is contained in:
Guido Schmit
2026-08-11 09:42:01 +02:00
parent bfa8c9dab1
commit c71ddb7ce3
3 changed files with 111 additions and 30 deletions

View File

@@ -1,24 +1,109 @@
{
"sourceLanguage" : "en",
"strings" : {
"mixer.name" : { "localizations" : {
"de" : { "stringUnit" : { "state" : "translated", "value" : "Audio-Mixer" } },
"en" : { "stringUnit" : { "state" : "translated", "value" : "Audio mixer" } } } },
"mixer.on" : { "localizations" : {
"de" : { "stringUnit" : { "state" : "translated", "value" : "Mixer einschalten" } },
"en" : { "stringUnit" : { "state" : "translated", "value" : "Turn mixer on" } } } },
"mixer.off" : { "localizations" : {
"de" : { "stringUnit" : { "state" : "translated", "value" : "Mixer ausschalten" } },
"en" : { "stringUnit" : { "state" : "translated", "value" : "Turn mixer off" } } } },
"mixer.off.explain" : { "localizations" : {
"de" : { "stringUnit" : { "state" : "translated", "value" : "Regelt die Lautstärke einzelner Programme, auch über 100 %." } },
"en" : { "stringUnit" : { "state" : "translated", "value" : "Sets the volume of individual apps, including above 100%." } } } },
"mixer.off.warning" : { "localizations" : {
"de" : { "stringUnit" : { "state" : "translated", "value" : "Dafür greift Onyx in den Tonweg der ausgewählten Programme ein. Beim Ausschalten wird der ursprüngliche Zustand sofort wiederhergestellt." } },
"en" : { "stringUnit" : { "state" : "translated", "value" : "Onyx intercepts the audio path of the selected apps to do this. Turning it off restores the original state immediately." } } } },
"mixer.noProcesses" : { "localizations" : {
"de" : { "stringUnit" : { "state" : "translated", "value" : "Kein Programm gibt gerade Ton aus" } },
"en" : { "stringUnit" : { "state" : "translated", "value" : "No app is playing audio" } } } }
"" : {
},
"%lld %%" : {
"comment" : "A row of controls for adjusting the volume and muting a process.",
"isCommentAutoGenerated" : true
},
"mixer.name" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Audio-Mixer"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Audio mixer"
}
}
}
},
"mixer.noProcesses" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Kein Programm gibt gerade Ton aus"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "No app is playing audio"
}
}
}
},
"mixer.off" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Mixer ausschalten"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Turn mixer off"
}
}
}
},
"mixer.off.explain" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Regelt die Lautstärke einzelner Programme, auch über 100 %."
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Sets the volume of individual apps, including above 100%."
}
}
}
},
"mixer.off.warning" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Dafür greift Onyx in den Tonweg der ausgewählten Programme ein. Beim Ausschalten wird der ursprüngliche Zustand sofort wiederhergestellt."
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Onyx intercepts the audio path of the selected apps to do this. Turning it off restores the original state immediately."
}
}
}
},
"mixer.on" : {
"localizations" : {
"de" : {
"stringUnit" : {
"state" : "translated",
"value" : "Mixer einschalten"
}
},
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Turn mixer on"
}
}
}
}
},
"version" : "1.0"
}
"version" : "1.1"
}