尽管beta权利标志是配置文件的一部分,但Xamarin iOS应用程序"不包含正确的beta权利"

Ste*_*uts 7 xamarin.ios ios xamarin

由于最初的TestFlight应用程序将在一个月内退役,我正试图掌握iTunes Connect Beta系统,这看起来是一项重大改进.按照指示,我重新生成了我的配置文件,并在我的构建服务器上重新加载它们.

然后我使用"AppStore | Release"配置文件执行构建,我在日志中看到了这条消息:

codesign -v -f -s"XXXXXX"" - resources-rules =/.../MyApp.app/ResourceRules.plist"--entitlements"/../ iSnagMobileiOS.xcent""/../ iSnagMobileiOS.app "

entitlements参数中指定的文件包含预期的beta-reports-active键:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>get-task-allow</key>
    <false/>
    <key>application-identifier</key>
    <string>XXXXXXX.com.mycompany.myapp</string>
    <key>com.apple.developer.team-identifier</key>
    <string>XXXXXXXX</string>
    <key>beta-reports-active</key>
    <true/>
    <key>keychain-access-groups</key>
    <array>
        <string>XXXXX.com.mycompany.myapp</string>
    </array>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

然后,我检索了生成的IPA,该IPA是使用我的分发证书签署的.为了检查是否已应用了正确的权利,我执行了此命令以检查配置文件:

unzip -p MyApp.ipa Payload/MyApp.app/embedded.mobileprovision | 安全cms -D

在XML片段中,我可以看到包含预期标志的权利字典:

<key>Entitlements</key>
<dict>
    <key>keychain-access-groups</key>
    <array>
        <string>XXXXXXXX.*</string>
    </array>
    <key>get-task-allow</key>
    <false/>
    <key>application-identifier</key>
    <string>XXXXXXXX.com.mycompany.myapp</string>
    <key>com.apple.developer.team-identifier</key>
    <string>XXXXXXXXX</string>
    <key>beta-reports-active</key>
    <true/>
</dict>
Run Code Online (Sandbox Code Playgroud)

在IPA中也没有额外的Entitlements.plist文件可能会将其丢弃.

我使用Application Loader 3.0上传了IPA,但之后收到了此错误消息:

警告:ITMS-90191:"缺少测试版权利.您的应用程序不包含beta-reports-active授权.如果您打算通过TestFlight分发此版本进行beta测试,请使用新生成的配置文件重新构建此应用程序. "

我在搜索这条消息时发现了很多点击,但似乎都没有描述上面的问题; 所有这些用户都发现重新生成配置文件并再次下载它就是所需要的.

我想知道我是否遇到了由旧版XCode或MonoTouch引起的问题,但在我更新了两者之后,我仍然遇到了同样的问题.我猜这个问题不是由Xamarin引起的,但可能是由我在构建配置中忽略的设置引起的,但我可能在那里错了.