我已经为MacOS开发了一个应用程序。我将公证过程作为其分发的一部分。我已经按照所有步骤操作,并且已经运行:
xcrun altool --notarize-app --primary-bundle-id "${APP_BUNDLE_ID}" --username "${APPLE_DEV_ID}" --password "${DEV_APP_SPECIFIC_PASSWORD}" --file "${DMG_PATH}"
然后我使用以下方法检查公证进度:
xcrun altool --notarization-info "${notarize_uuid}" -u "${APPLE_DEV_ID}" -p "${DEV_APP_SPECIFIC_PASSWORD}
输出为:
RequestUUID: =<Request>
Date: 2019-05-26 09:40:34 +0000
Status: success
LogFileURL: <Log file>
Status Code: 0
Status Message: Package Approved =~ success ]]
然后我启动装订命令:
xcrun stapler staple -v <dmg file>
它也以成功而告终:
The staple and validate action worked!
但是,当我提取.app文件并运行时:
spctl --assess --verbose ./macos/MyApp.app
./macos/MyApp.app/: accepted
根据我阅读过的文档,它应该说:“ source = Notarized Developer ID”,对吗?
我正在MacOS Mojave 10.14.5上运行它
我想念什么?
有人可以帮我吗?
预先感谢
答案 0 :(得分:0)
如果有人遇到相同的问题,我将发布解决方案:
首先,您必须装订.app文件而不是dmg。这意味着您必须提取二进制文件并将其装订
还可以在
中检查申请是否经过公证。`System Preferences - Security and Privacy`
选项Allow apps downloaded from:
必须选中Apple Store and identifier developers
选项
希望这会有所帮助
答案 1 :(得分:0)
两者 app
和dmg
可以分别经过公证和装订。尝试这样做,错误应该消失。
答案 2 :(得分:0)
简短答案
这可能是由于RPATH
引用了App Bundle之外的路径。删除此RPATH将解决问题。
检查日志文件
您可以在Console.app
中找到有关拒绝的其他信息(尝试启动被阻止的应用程序之后)。请注意,在尝试打开被阻止的应用程序之前,应先打开Console.app,否则可能不会记录所有消息。您应该在设备的日志中查找过程XprotectService
(即,在Console.app的左侧栏中选择设备)。如果RPATH确实是问题所在,则应该找到这样的记录:
XprotectService:[com.apple.xprotect:xprotect]在rPathCmd / rpath / cause / the / problem上文件/ path / to /您的/可执行文件/或/库失败(rpath解析为:(未找到路径),bundleURL :/path/to/your/bundle.app)
检查这些日志文件也可以为您提供解决其他问题的钥匙。
请注意,我从Apple工程师那里收到了以下信息:
Gatekeeper不会通过UI通知用户有关 错误,尽管它在日志中供开发人员查看。的 公证过程完全是关于检测恶意软件的 并且不复制Gatekeeper强制执行。你仍然需要 经公证的软件,并使用Gatekeeper进行测试。
我们希望将来为开发人员提供更好的工具 预检一些常见错误。
联系苹果
如果使用上述信息无法解决问题,则可能需要使用Feedback Assistant与Apple本身联系。他们的回复速度不是很快(〜1-2周),但是答案很明确。