公证MacOS应用程序的过程不起作用

时间:2019-05-26 10:05:23

标签: macos-mojave codesign notarize

我已经为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上运行它

我想念什么?

有人可以帮我吗?

预先感谢

3 个答案:

答案 0 :(得分:0)

如果有人遇到相同的问题,我将发布解决方案:

首先,您必须装订.app文件而不是dmg。这意味着您必须提取二进制文件并将其装订

还可以在

中检查申请是否经过公证。
`System Preferences - Security and Privacy`

选项Allow apps downloaded from:必须选中Apple Store and identifier developers选项

希望这会有所帮助

答案 1 :(得分:0)

两者 appdmg可以分别经过公证和装订。尝试这样做,错误应该消失。

答案 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周),但是答案很明确。