我真的要为这个问题发疯了!我有一个应用程序,其中包含一个简单的帮助程序应用程序,该应用程序管理主应用程序的登录项。
当我尝试提交应用时,我收到与预配配置文件和权利相关的错误。我确定问题与助手应用程序有关,因为在我添加它之前,提交没有问题。
目前,帮助程序应用已进行代码签名,并作为主应用进行沙盒处理。
错误是:
-
预配配置文件无效。捆绑包中包含的置备配置文件无效
-
无效的代码签名授权。应用捆绑包签名中的权利与预配配置文件中包含的权利不匹配。捆绑包包含的密钥未包含在"myapp.app/Contents/Library/LoginItems/helper.app"中的预配配置文件"com.apple.application-identifier"中
-
无效的代码签名授权。应用捆绑包签名中的权利与预配配置文件中包含的权利不匹配。捆绑包包含的密钥未包含在"myapp.app/Contents/MacOS/myapp"中的预配配置文件"com.apple.application-identifier"中
对于遇到此问题的其他任何人,您不必再次共同设计帮助程序应用程序,只需从 xarchive 中的帮助程序应用程序中删除"embedded.provisionprofile",您就可以提交任何问题。
似乎解决此问题的唯一解决方案是从 Xcode 协同设计和沙盒化帮助程序应用程序,然后:
从终端重新设计帮助程序应用程序
codesign -f -s "3rd Party mac Developer Application:" -i
"com.bundle.YOUR.HELPER" --entitlements path/to/helper/entitlements
YEOR-HELPER.app
从帮助程序应用中删除预配配置文件,将"运行脚本"添加到"生成阶段"
rm"${BUILT_PRODUCTS_DIR}/${PRODUCT_NAME}.app/Contents/Library/LoginItems/YOUR-HELPER.app/Contents/embedded.provisionprofile"
使用此解决方案,我们已正确提交应用。
当我不小心在我的目标中包含一些第 3 方 .a 文件时,我遇到了第三个错误。(非App Store发行版需要它们,但我忘了在App Store版本中排除它们)。该错误对追踪这一点没有太大帮助!
我终于能够通过添加以下运行脚本从帮助程序应用程序中删除嵌入式.provision配置文件来解决此问题:
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