【问题标题】:Submit an OSX App with helper App in its bundle提交一个 OSX 应用程序,在其捆绑包中包含帮助程序应用程序
【发布时间】:2012-06-29 02:51:05
【问题描述】:

我真的被这个问题发疯了!我有一个应用程序,其中包含一个简单的 Helper 应用程序,它管理主应用程序的登录项。

当我尝试提交应用程序时,我收到与配置文件和权利相关的错误。我确定问题与 Helper 应用程序有关,因为在我添加它之前,提交工作没有问题。

目前,帮助应用程序已进行代码签名,并作为主应用程序被沙盒化。

错误是:

  • 配置文件无效。捆绑包中包含的配置文件无效

  • 无效的代码签名权利。您的应用程序包签名中的权利与配置文件中包含的权利不匹配。该捆绑包包含一个未包含在 'myapp.app/Contents/Library/LoginItems/helper.app'

    中的配置文件“com.apple.application-identifier”中的密钥/li>
  • 无效的代码签名权利。您的应用程序包签名中的权利与配置文件中包含的权利不匹配。该捆绑包包含一个未包含在“myapp.app/Contents/MacOS/myapp”中的配置文件“com.apple.application-identifier”中的密钥

【问题讨论】:

  • 您是否在应用中使用 iCloud 存储?
  • 但是您根本不需要配置文件吗?也许您的(主/辅助)应用程序的目标摘要设置的“iCloud 容器”列表中有条目?
  • 我通过终端的代码签名解决了这个问题!我真的无法理解。
  • 我在尝试验证我们的应用程序时收到相同的错误消息。我什至尝试验证之前成功提交的档案,也遇到了同样的错误。
  • @roustem 检查我的答案!希望对你有帮助

标签: cocoa provisioning submission mac-app-store


【解决方案1】:

对于遇到此问题的其他人,您不必再次对辅助应用程序进行代码签名,只需从 xarchive 中的辅助应用程序中删除“embedded.provisionprofile”即可提交没有问题。

【讨论】:

  • 这对我有用。主应用程序和辅助应用程序都经过代码签名。主应用程序和辅助应用程序都具有具有单独捆绑 ID 的分发配置文件。我最初能够构建和存档,但遇到了通过验证的问题。存档后,我选择了存档并在 Finder 中显示。然后,从存档深处的 HELPER 应用程序中手动删除 embedded.provisionprofile。然后,返回 Xcode,重新验证并提交清理后的存档。
  • 谢谢肖恩!为我工作。
  • 谢谢肖恩,你刚刚解决了我的头痛!
  • 呸!多么救命啊!上帝的礼物,玛莎阿拉 :)
  • 我按照这些步骤成功提交了应用程序,但几分钟后收到了来自 Apple 的电子邮件:“...无效签名 - 当您错误地签署了应用程序的安装程序时会发生此错误。有两个证书此过程所需:“3rd Party Mac Developer Application”证书和“3rd Party Mac Developer Installer”证书。在签署包时,您需要确保使用 Installer 证书对包进行签名。确保您是通过 Xcode Organizer 提交您的应用程序或从命令行运行 productbuild 时指定此证书...."
【解决方案2】:

似乎解决此问题的唯一解决方案是对 Xcode 中的帮助应用程序进行代码设计和沙盒处理,然后:


从终端重新设计 Helper 应用程序

codesign -f -s "3rd Party mac Developer Application:" -i "com.bundle.YOUR.HELPER" --entitlements path/to/helper/entitlements YEOR-HELPER.app



从 Helper 应用中删除配置文件,将“运行脚本”添加到“构建阶段”中

rm"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/Library/LoginItems/YOUR-HELPER.app/Contents/embedded.provisionprofile"

通过这个解决方案,我们已经正确提交了我们的应用程序。

【讨论】:

  • 自动两者怎么样? rm "${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Library/LoginItems/YOURHELPER.app/Contents/${EMBEDDED_PROFILE_NAME}"codesign -f -s "${CODE_SIGN_IDENTITY}" -i "com.identifier.YOURHELPER" --entitlements "${SOURCE_ROOT}/Path/To/YOURHELPER.entitlements" "${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Library/LoginItems/YOURHELPER.app"
  • 您是否必须再次明确地对帮助应用程序进行代码设计?我的助手应用程序有自己的 BundleID,我没有它的生产配置文件。尽管如此,我还是可以归档主应用程序并且它通过了 iTC 测试(状态更改为“等待审核”)。也许它会在 Apple 审核期间被拒绝? :S
  • 非常感谢,你让我开心。我整个星期都在为这个该死的标志错误而苦苦挣扎。如果可以的话,我会给你+100:D
  • 我终于能够通过添加以下运行脚本从帮助应用程序中删除 embedded.provisionprofile 文件来解决此问题: if [ -f "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app /Contents/embedded.provisionprofile" ];然后 rm "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/embedded.provisionprofile" echo "删除了嵌入式配置文件。" else echo "No profile found" fi
【解决方案3】:

当我不小心在我的目标中包含一些 3rd-party .a 文件时,我遇到了第三个错误。 (非 App Store 分发需要它们,但我忘记将它们排除在 App Store 构建中)。这个错误对追踪它没有太大帮助!

【讨论】:

    【解决方案4】:

    我终于能够通过添加以下运行脚本从帮助应用程序中删除 embedded.provisionprofile 文件来解决此问题:

    if [ -f "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/embedded.provisionprofile" ];
    then
        rm "${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/embedded.provisionprofile"
        echo "Removed embedded provisioning profile."
    else
        echo "No profile found"
    fi
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多