Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos OS X网守/代码签名:签名无效_Macos_Codesign_Entitlements_Osx Gatekeeper - Fatal编程技术网

Macos OS X网守/代码签名:签名无效

Macos OS X网守/代码签名:签名无效,macos,codesign,entitlements,osx-gatekeeper,Macos,Codesign,Entitlements,Osx Gatekeeper,我面临着一个棘手的问题,我希望有人以前也遇到过类似的问题 我创建了一个OSX应用程序(应用程序包,在Yosemite 10.10.2上测试),其中有几个助手子应用程序是这个包的一部分。这些子应用程序存储在它们自己的应用程序包中 结构如下: AppName.app -> Contents/Frameworks/SubAppName_1.app -> Contents/Frameworks/SubAppName_2.app 等等。。这一切都很好,没有任何问题 当

我面临着一个棘手的问题,我希望有人以前也遇到过类似的问题

我创建了一个OSX应用程序(应用程序包,在Yosemite 10.10.2上测试),其中有几个助手子应用程序是这个包的一部分。这些子应用程序存储在它们自己的应用程序包中

结构如下:

AppName.app
      -> Contents/Frameworks/SubAppName_1.app
      -> Contents/Frameworks/SubAppName_2.app
等等。。这一切都很好,没有任何问题

当我对我的应用进行沙箱/代码设计以准备开发/临时/Mac应用商店部署时,问题开始出现

我正在使用以下命令签署我的应用程序包(+子组件)

再说一次,效果很好。已签名的应用程序启动,工作正常。所有功能都正常工作,没有错误/崩溃/可见错误。与非沙盒/代码签名应用程序类似。一切都在沙箱中运行。我可以用这个应用几个小时,没问题

但是,如果我关闭应用程序一段时间(比如15-30分钟,这是随机的),我会在我的一个子应用程序上出现以下签名无效错误(主捆绑包将它们作为子进程生成)

如果我在几分钟后重新启动应用程序,一切仍然正常。十次中有九次我需要重新编译应用程序以使其重新工作。然而,偶尔,它会随机重新开始工作

当我在不相关的Yosemite设备上部署此应用程序的临时构建时,也会发生同样的情况,但我得到以下amfid错误代码:0xfffefa2a


有人知道这是什么原因吗?一定是我做错了什么

我们遇到了同样的问题,并向苹果开发人员支持部门开出了罚单。 然而,我们在嵌套的包裹中发现了导致问题的松弛物

OSX使用不区分大小写的文件系统。因此,将嵌套框架命名为“SubAppName_1.app”或“SubAppName_1.app”基本上无关紧要。这是真的,直到约塞米蒂。在OSX10.10中,苹果开始使用源自iOS的amfid(苹果移动文件完整性守护程序)。amfid似乎考虑了文件名和文件夹名的大小写敏感性

最后,我们调整了所有的大小写敏感度,包括文件名、文件夹名、软链接和编译到框架可执行文件中的名称

otool
命令可以帮助您检查编译中使用的名称:

>otool -L <your main executable> //Gives list of libraries to load
>otool -D <nested bundle's executable> //Gives self-name of the library
>otool-L//提供要加载的库的列表

>otool-D这可能与此无关,但表示助手应用程序应该在Contents/Helpers或Contents/MacOS中,而不是Contents/Frameworks中。我不知道这一点。我会看看移动它们是否会有所不同。助手应用程序实际上是Chromium Embedded Framework中的可执行文件,许多应用程序都使用该框架。例如,Spotify客户端中也使用了CEF,在检查了他们的应用程序包后,我注意到他们还将助手存储在Frameworks目录中。所以我假设移动它们不会有太大的区别。我测试了这个,它没有改变任何东西(代码签名在出现问题时是否仍在验证(即Do
codesign-vv--deep verify
codesign-dv
仍在应用程序和附带的子应用程序上传递)?@Charles:你找到解决方案了吗?
12:38:56 MBA.local amfid[274]: /Applications/AppName.app/Contents/Frameworks/SubAppName_1.app/Contents/MacOS/SubAppName_1 signature not valid: 0xfffefa31
12:38:56 MBA kernel[0]: proc 82808: load code signature error 4 for file "SubAppName_1"
12:38:57 MBA.local amfid[274]: /Applications/AppName.app/Contents/Frameworks/SubAppName_1.app/Contents/MacOS/SubAppName_1 signature not valid: 0xfffefa31
12:38:57 MBA kernel[0]: proc 82811: load code signature error 4 for file "SubAppName_1"
>otool -L <your main executable> //Gives list of libraries to load
>otool -D <nested bundle's executable> //Gives self-name of the library