Mac app store帮助工具Sandboxing

dal*_*oto 2 code-signing helpers app-store monomac appstore-sandbox

我的应用程序包含两个可执行文件

  • 主app可执行文件
  • 用于处理某些文件的小型控制台应用程序,此可执行文件位于Resources文件夹中(无需root权限)

问题是我不知道如何将这个应用程序提交到appstore,我得到了苹果的以下回复

签名无效 - 路径appname.app上的主应用程序包appname已签名但签名无效.从编码签名报告了以下错误:密码资源丢失或无效在架构中:i386

如果我删除帮助应用程序,它会绕过此错误,但应用程序将无法正常工作.任何人都知道如何嵌入帮助应用程序并将其签名到appstore的好方法或示例?

Apple文档对此并不清楚.

daf*_*afi 7

您需要同时签署主应用程序和帮助程序控制台工具

签名.app已记录在案,因此我将向您介绍如何对助手进行编码.

  • 手动创建权利文件并将其添加到帮助项目(您可以从主应用程序复制一个并删除不必要的权利密钥)
  • 创建一个Info.plist,如将Info.plist添加到单个文件工具中所述(此步骤不是强制性的,但如果您发现帮助程序崩溃,请尝试添加它)

如果主应用程序启动帮助工具,则需要添加

com.apple.security.inherit
Run Code Online (Sandbox Code Playgroud)

启用应用程序沙盒继承中描述了这一点

如果主应用程序以其他方式与帮助程序交互,则可能需要XPC通信,或者如果您运气好,则使用App Group就足够了

就像是

<key>com.apple.security.application-groups</key>
<array>
    <string>$(TeamIdentifierPrefix)my.package</string>
</array>
Run Code Online (Sandbox Code Playgroud)

看看AppSandboxLoginItemXPCDemo

根据我的经验,TeamIdentifierPrefix在开发环境中必须为空,并在提交给MAS时设置为您的团队ID,请谨慎处理我对TeamIdentifierPrefix的考虑(即自己动手)

  • 如果您没有帮助应用程序的源代码而只有二进制文件,您可以使用以下命令将新的运行脚本构建阶段添加到您的主要目标 /usr/bin/codesign --force --sign "$CODE_SIGN_IDENTITY" -i "&lt; helper_tool_identifier&gt;" --entitlement "$PROJECT_DIR/&lt;path_to_helper_entitlment_file&gt;" "$BUILD_DIR/$CONFIGURATION/$EXECUTABLE_FOLDER_PATH/&lt;helper_filename&gt;" (2认同)