Xcode 9.3导出AdHoc包报错:Provisioning profile无beta-reports-active权限
我之前也碰到过一模一样的问题,折腾了好一阵才搞定,给你分享几个亲测有效的解决步骤,按顺序试下来应该能解决:
先确认App ID的权限配置
登录Apple开发者后台找到对应App ID,进入编辑页面拉到最底部的「Additional Capabilities」,检查是否勾选了Beta Testing选项——这个选项对应就是beta-reports-active权限。如果没勾选就打上勾,然后重新生成AdHoc类型的Provisioning Profile。手动在Entitlements文件中添加权限
如果后台配置没问题,但Xcode还是没自动带上这个权限,可以手动操作:- 要是项目里还没有Entitlements文件,就新建一个:
File -> New -> File -> iOS -> Resource -> Property List,命名成你的项目名.entitlements - 打开这个文件,添加键
beta-reports-active,类型设为Boolean,值改成YES - 到项目的Build Settings里,找到
Code Signing Entitlements,把这个entitlements文件的路径填进去(比如$(SRCROOT)/你的项目文件夹/你的项目名.entitlements)
- 要是项目里还没有Entitlements文件,就新建一个:
彻底清理Xcode缓存和Derived Data
旧缓存经常会让Xcode"视而不见"新配置,按这个步骤清:- 完全关闭Xcode
- 打开终端执行命令:
rm -rf ~/Library/Developer/Xcode/DerivedData - 重新打开Xcode,重新归档项目后再尝试导出
检查下载的配置文件内容
把刚生成的AdHoc配置文件下载到本地,双击打开后右键选「Show in Finder」,用文本编辑器打开它,搜索beta-reports-active关键词。如果搜不到,说明后台生成配置文件时没把权限加进去,重新生成时要确保选的是已经开启Beta Testing的App ID,且关联的证书是你新创建的那个。导出时手动指定最新配置文件
导出AdHoc包到选择配置文件那一步,别用Xcode自动匹配的选项,手动选择你刚重新生成的那个配置文件,避免Xcode选到旧的缓存配置。
另外你说导出App Store包正常,是因为App Store类型的配置文件默认就包含了这个权限,而AdHoc需要我们手动确保配置链的每一步都正确。
内容的提问来源于stack exchange,提问作者ChandreshKanetiya

