菜鸟教程小白 发表于 2022-12-12 13:25:11

ios - 使用 Xcode 8.3.2 为 AdHoc IPA 导出指定配置文件


                                            <p><p>昨天我已经从 Xcode 8.1 升级到 8.3.2,当然我所有的 CI 构建基础架构再次失败(感谢 Apple,你总是知道如何让我更加忙碌!)。</p>

<p>因此,主要的破坏性变化是 <code>-exportProvisioningProfile</code> 不再是一个有效选项。据我了解,他们现在迫使我们改用 <code>-exportOptionsPlist</code>。</p>

<p>我已经为我的一个应用程序配置导出,以使用 .plist 文件和 <code>app-store</code> 方法仅用于市场。
对于任何 AdHoc 导出,我很乐意使用 <code>-exportProvisioningProfile "$PROVISIONING_PROFILE"</code>。不知道为什么 Apple 认为它不好。</p>

<p>因此,现在我必须修改我的自动构建脚本以使用 .plist 文件进行任何导出。</p>

<p>我能够从 <code>xcodebuild -help</code> 和其他关于 SO 的问题中发现,我需要将方法设置为 <code>ad-hoc</code> 以进行内部分发。好的,这很简单,但是......</p>

<p><strong>我怎么才能指定要用于 IPA 导出的确切配置文件?</strong></p>

<p>我可以在从 GUI 导出时选择所需的配置文件,所以我相信应该有一些方法可以将它传递给 <code>xcodebuild</code>。但是,我仍然没有在网络上找到任何执行此操作的方法。</p>

<p>提前谢谢你们。</p>

<hr/>

<p>附注请不要建议使用自动配置文件管理,我有几个用于导出的配置文件专用于他们自己的目的,我需要明确说明在特定情况下使用哪一个(我的 bash 脚本在构建过程开始时定义它)。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>您不能再直接为 IPA 导出指定 Provisioning Profile,而是必须在 exportOptions.plist 中为 <code>teamID</code> 和 <code>method</code> 指定参数,因此 xcodebuild将能够为您解析所需的配置文件:</p>

<pre><code>&lt;?xml version=&#34;1.0&#34; encoding=&#34;UTF-8&#34;?&gt;
&lt;!DOCTYPE plist PUBLIC &#34;-//Apple//DTD PLIST 1.0//EN&#34; &#34;http://www.apple.com/DTDs/PropertyList-1.0.dtd&#34;&gt;
&lt;plist version=&#34;1.0&#34;&gt;
&lt;dict&gt;
    &lt;key&gt;method&lt;/key&gt;
    &lt;string&gt;ad-hoc&lt;/string&gt;
    &lt;key&gt;teamID&lt;/key&gt;
    &lt;string&gt;YOUR_TEN_CHARACTER_TEAM_ID&lt;/string&gt;
&lt;/dict&gt;
&lt;/plist&gt;
</code></pre>

<p>您可以在配置文件中查找您的 teamID(key <code>TeamIdentifier</code>)</p>

<p>如果用于构建 xcarchive 的配置文件使用与导出配置文件相同的 teamID,则您不必在 plist 中设置 teamID 参数,但这总是一个好主意。</p>

<p>请务必将您的 AdHoc Prov 配置文件复制到 <code>$HOME/Library/MobileDevice/Provisioning Profiles</code>,以便 xcodebuild 能够找到它。</p>

<p><strong>编辑</strong></p>

<p>如果您在 <code>$HOME/Library/MobileDevice/Provisioning Profiles</code> 中有多个 Prov 配置文件,它们都与方法、teamID 和应用程序的包标识符的组合相匹配,您将有两个选择:</p>

<ol>
<li>在每次导出前准备<code>$HOME/Library/MobileDevice/Provisioning Profiles</code>,这样它就只包含所需的配置文件。将当前内容移走 (<code>cp -Rpf "$HOME/Library/MobileDevice/Provisioning Profiles""$HOME/Library/MobileDevice/Provisioning Profiles Backup"&& rm -f "$HOME/Library/MobileDevice/Provisioning Profiles/"*.mobileprovision</code>), 然后将导出配置文件复制到目录,导出 ipa 并恢复备份文件夹。</li>
<li>尝试<code>xcodebuild -exportArchive ... PROVISIONING_PROFILE_SPECIFIER=xxx</code>,内容应该是Prov Profile内部plist的<code>Name</code>键的值。此行为未记录,因此它可能不适用于所有 Xcode > 7 版本。当您的应用程序包含嵌入式扩展时,它也可能不起作用,因为它们可能需要单独的 Prov 配置文件。 </li>
</ol></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 使用 Xcode 8.3.2 为 AdHoc IPA 导出指定配置文件,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/43675497/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/43675497/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 使用 Xcode 8.3.2 为 AdHoc IPA 导出指定配置文件