【问题标题】:Mac app store helper tool SandboxingMac 应用商店助手工具 Sandboxing
【发布时间】:2012-11-01 08:08:19
【问题描述】:

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

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

问题是我不知道如何将这个应用提交到应用商店,我收到了来自苹果的以下回复

无效签名 - 路径 appname.app 处的主应用程序包 appname 已签名,但签名无效。 codesign 报告了以下错误: 密封资源丢失或无效 在架构方面:i386

如果我删除辅助应用程序,它会绕过此错误,但应用程序根本无法运行。任何人都知道如何嵌入帮助应用程序并将其正确签名到应用商店的好方法或示例??

Apple 文档对此并不清楚。

【问题讨论】:

    标签: app-store code-signing helpers monomac appstore-sandbox


    【解决方案1】:

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

    签名 .app 已记录在案,因此我将向您描述如何对帮助程序进行代码签名。

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

    如果主应用启动了你需要添加的辅助工具

    com.apple.security.inherit
    

    这在Enabling App Sandbox Inheritance中有描述

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

    类似

    <key>com.apple.security.application-groups</key>
    <array>
        <string>$(TeamIdentifierPrefix)my.package</string>
    </array>
    

    看看AppSandboxLoginItemXPCDemo

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

    【讨论】:

    • 我没有助手工具的源码,它是一个控制台应用程序,这种情况我该怎么办?
    • 这是个问题,您可以对二进制文件进行签名但 ì 不知道如何添加 plist
    • 如果您没有帮助应用程序的源代码而只有二进制文件,您可以使用以下命令 /usr/bin/codesign --force --sign 将新的运行脚本构建阶段添加到您的主目标"$CODE_SIGN_IDENTITY" -i "" --entitlement "$PROJECT_DIR/" "$BUILD_DIR/$CONFIGURATION/$EXECUTABLE_FOLDER_PATH/"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-19
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-20
    相关资源
    最近更新 更多