Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.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
Objective c 如何为沙盒Mac应用程序共同设计Growl.framework_Objective C_Macos_Growl_Appstore Sandbox - Fatal编程技术网

Objective c 如何为沙盒Mac应用程序共同设计Growl.framework

Objective c 如何为沙盒Mac应用程序共同设计Growl.framework,objective-c,macos,growl,appstore-sandbox,Objective C,Macos,Growl,Appstore Sandbox,我正在尝试在应用商店中提交Mac应用以供批准,但与Growl链接会导致验证错误。我试图从命令行重新进行代码设计,但出现以下错误: Ashs-MacBook-Pro:500px Uploader ash$ codesign -f -v -s "3rd Party Mac Developer Application: 500px Inc." ./Growl.framework/Versions/A ./Growl.framework/Versions/A: replacing existing si

我正在尝试在应用商店中提交Mac应用以供批准,但与Growl链接会导致验证错误。我试图从命令行重新进行代码设计,但出现以下错误:

Ashs-MacBook-Pro:500px Uploader ash$ codesign -f -v -s "3rd Party Mac Developer Application: 500px Inc." ./Growl.framework/Versions/A
./Growl.framework/Versions/A: replacing existing signature
./Growl.framework/Versions/A: object file format unrecognized, invalid, or unsuitable

我尝试重新下载框架,但没有成功。有人看到我做错了什么吗?

看起来错误可能是试图对已签名的捆绑包进行签名;我通过下载Growl框架源代码并用自己的签名编译它来解决这个问题


如果我找到了一个更好的答案,它适用于您没有编译能力的框架,我将在这里发布。

真奇怪,我已经成功地放弃了框架,如下所示:

codesign -fs "3rd Party Mac Developer Application: Future Simple" Growl.framework/Versions/A/Growl
Growl.framework/Versions/A/Growl: replacing existing signature

(顺便说一句:我正在使用Xcode 4.3.1和Growl 1.3.1)

我花了一天的时间处理框架代码签名时出现的“捆绑格式无法识别、无效或不合适”错误。在我的例子中,我使用的是XCode 4.6.1,我试图对Qt框架进行代码签名

首先请注意,Apple文档()明确指出,您需要对版本化框架目录(而不是库可执行文件)进行代码签名

这里将进一步讨论这一点:

因此,基于此,Ash原始问题中的命令行是正确的。然而,我得到了同样的错误

我确实让它在命令行中工作。以下是我必须做的事情:

  • 确保您使用的是正确版本的代码设计。这里的许多答案都讨论了这一点:如果您可以让XCode对应用程序进行签名,那么您可以在构建日志中找到CODESIGN\u分配路径

  • 确保版本化目录(./Growl.framework/Versions/A,在上面的问题中)包含Resources/Info.plist,并且有来自Versions/Current->Versions/A的链接,并且在框架捆绑包的顶层有一个链接Resources->Versions/Current/Resources。我发现如果没有版本/A/Resources/Info.plist,我无法对版本化框架目录进行签名。您可以阅读更多关于框架的正确结构的信息,或者只是看看一些系统框架,了解它们应该如何构造

  • 关于上一点,请确保框架捆绑包中的符号链接结构正确(当前链接到编号版本,顶级链接到当前版本),如图所示。这不会影响代码签名,但如果您未正确执行此操作,您的应用程序将被拒绝

  • 确保在框架的Info.plist中将CbundleExecutable设置为正确的名称(可执行文件名)


    • 如果我们未经签名就发布sdk会更好吗?这将是一个简单的更改,我现在很犹豫是否这样做,因为这种情况已经持续了一段时间。

      我通过导出证书并在同事的计算机上运行代码设计,成功地解决了这个问题。一定是我的钥匙链出了问题。