objective-c - OS X - 应用程序无法打开,因为当捆绑包包含新版本的第三方可执行文件时无法确认开发者的身份
问题描述
我有一个应用程序,它的捆绑资源中有第三方可执行文件。我曾经在发布阶段签署应用程序并在 Mac App Store 之外分发。一切皆好。在我更新了第三方可执行文件后,一旦应用程序像往常一样签名并从网站下载到 mac,OS X 会显示警报“应用程序无法打开,因为无法确认开发者的身份”。
我在签署应用程序之前尝试签署第三方可执行文件:没有任何区别。如果我用旧版本替换新的第三方可执行文件(退出并重新下载) - 应用程序警告没有显示,一切都很好。
“codesign -dv app”显示带有第三方可执行文件的旧版本或新版本的签名应用程序包的合理相同输出。
应用程序使用有效的 Mac 开发人员 ID 进行签名。
解决方案
检查你的包中的所有二进制文件是否都没有引用 /usr/bin 或 /System 之外的库。在我们的例子中,我们有一个绝对路径,GateKeeper 不允许它运行。codesign --verify 没用。
您可以使用以下命令:otool -L path_to_binary
如果您看到 /System 或 /usr/bin 之外的任何依赖项 - 摆脱它们
推荐阅读
- ansible - 在 Ansible playbook 中将动态变量与 with_item 一起传递给 include_tasks 的语法
- scala - 使用 scala 动态访问 protobuf 字段名称
- c# - 在分组的列表中查找缺失的项目
- angular - 如何在 Angular 7 的 beforeEach Karma/Jasmine 测试中将服务注入自定义类?
- java - ModelMapper 不忽略空值
- javascript - 水平对齐 Chart.js y 轴
- php - PHP - 如何按键对多维数组进行排序?
- docker - 如何将 Analytics 添加到我现有的 wso2is?(WSO2 身份服务器)
- linux - 如何将迭代循环列表转换为字符串以在 Linux 中使用
- python - 如何用字典中的数字替换熊猫列中句子中的所有单词,然后对它们求和?