Вот более подробное описание моего решения.
Я наконец-то нашел решение для получения нотариально заверенного приложения, которое является функциональным. Пакет организован следующим образом:
TestApp.app
Contents
MacOS
testAppp <-- a launcher (C binary)
myAlert <-- an alert dialogue (Cocoa binary)
Resources
winteracter <-- an X11 (Xquartz) window and dialogue (Fortran binary)
Двоичный "winteracter" основан на библиотеке Winteracter <<a href="http://www.winteracter.com" rel="nofollow noreferrer">http://www.winteracter.com>, которая использует OpenMotif и Xquartz
winteracter двоичный файл
Этот двоичный файл защищен вручную (т. Е. Вне XCode) до других:
codesign -d --force --options runtime --verbose=4 -s "$DEV_CERTIFICATE" --entitlements "winteracter.entitlements" "winteracter"
winteracter.entitlements должен содержать только следующий ключ:
<key>com.apple.security.cs.disable-library-validation</key>
<true>
testApp и myAlert двоичные файлы
Они подписаны и защищены либо вручную:
codesign -d --force --options runtime --verbose=4 -s "$DEV_CERTIFICATE" "$MYBINARY"
, либо с использованием Xcode:
In that case be sure to manually erase the field "*Code Signing Entitlements*" in Build Settings.
Он может оставаться заполненным, даже если вы удалите «Песочницу» из интерфейса возможностей.
После нотариального заверения приложение работает. Я пробовал «песочницу», но печально известная ошибка « процесс сопоставления и сопоставленный файл (не платформенный) имеют разные идентификаторы команд » вернулась!
Но в чем были мои ошибки?
1- Apple утверждает, что ключи песочницы должны появляться только один раз в файле прав основного двоичного файла, а другие имеют только ключ «наследовать». Я ошибочно предположил, что com.apple.security.cs.disable-library-validation также был унаследован.
2- Я думал, что ключ com.apple.security.app-sandbox является обязательным в файлах прав. Совсем нет!
3 - Я ошибочно предположил, что установка com.apple.security.app-sandbox в значение false эквивалентна отсутствию файла прав. Опять неправильно!
4- Я ошибочно предположил, что интерфейс Xcode "Signing & Capabilities" правильно управляет настройками сборки.
5- Я выполнил так много пробных ошибок, что не помню все всеми тупиками, где я заблудился.