Xcode 9分发版本失败,因为exportOptions.plist的格式在新版本中已更改

tut*_*ain 22 xcode code-signing codesign

我正在尝试使用SDK版本6.1.2和Xcode 9 beta为我的应用程序编译ad-hoc IPA(试图查看该应用程序是否在新版本中运行).我的构建失败,出现以下错误消息:

Error Domain=IDEProvisioningErrorDomain Code=9 ""DGHospice.app" 
requires a provisioning profile." UserInfo=
{NSLocalizedDescription="DGHospice.app" requires a provisioning 
profile., NSLocalizedRecoverySuggestion=Add a profile to the 
"provisioningProfiles" dictionary in your Export Options property  
list.}
Run Code Online (Sandbox Code Playgroud)

分发配置文件有效,如果我使用iOS SDK 10,我可以创建IPA.仅在11.0中构建失败.有人可以帮助我查明问题吗?

abl*_*arg 31

您似乎使用手动代码签名(由Export Options property list错误消息中推断).如果符合您的需要,您应该按照Apple的建议切换到自动代码签名.

问题似乎是exportOptions.plist格式与之不兼容Xcode 9.一个裸骨分布plist Xcode 9现在看起来类似于:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
      <key>provisioningProfiles</key>
      <dict>
        <key>MY_APP_BUNDLE_ID</key>
        <string>MY_PROFILE_NAME_AS_SHOWN_BY_XCODE or UUID_FOUND_IN_MOBILEPROVISION_FILE</string>
      </dict>
      <key>signingCertificate</key>
      <string>iOS Distribution</string>
      <key>signingStyle</key>
      <string>manual</string>
      <key>teamID</key>
      <string>MY_TEAM_ID</string>
  </dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

您可以exportOptions.plist通过运行查看支持的选项列表xcodebuild -help.

您可以Xcode 9通过观看此视频获得有关这些内容的有用概述:https: //developer.apple.com/videos/play/wwdc2017/403/

您还可以通过在Xcode的搜索字段中搜索"手动签名"来获得帮助.

您可以exportOptions.plist按照AnnaBátki在BitRise上记录的过程创建一个虚拟文件:http://blog.bitrise.io/2017/08/15/new-export-options-plist-in-Xcode-9.html

您应该知道,如果您使用Anna的步骤Xcode 9 beta 5,exportOptionsPlist则不会导出.此行为再次起作用Xcode 9 GM.

要确定配置文件在exportOptionsPlist文件中的价值,您可以查看要使用的.mobileprovision文件的内容,并将密钥设置为应用程序的软件包ID('com.foo')和UUID的值.在您的.mobileprovision文件中.

您可以在此处查看构建将使用的配置文件: ls ~/Library/MobileDevice/Provisioning\ Profiles/


Vic*_*hoy 9

使用命令/Applications/Xcode-beta.app/xcodebuild -help.您将获得有关exportOptionsPlist的详细信息-exportOptionsPlist的可用密钥:

....

provisioningProfiles:Dictionary

仅限手动签名.指定用于应用程序中每个可执行文件的配置文件.此字典中的键是可执行文件的包标识符; 值是要使用的配置文件名或UUID.

....

这是关于选项plist的示例

<?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>provisioningProfiles</key>
    <dict>
        <key>com.aaa.bbb</key>
        <string>adhoc_bbb</string>
        <key>com.aaa.ccc</key>
        <string>adhoc_ccc</string>
    </dict>
    <key>method</key>
    <string>ad-hoc</string>
    <key>uploadBitcode</key>
    <false/>
    <key>uploadSymbols</key>
    <true/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)