Ios 向Appstore/iTunesConnect提交临时应用程序

Ios 向Appstore/iTunesConnect提交临时应用程序,ios,app-store-connect,code-signing,ad-hoc-distribution,application-loader,Ios,App Store Connect,Code Signing,Ad Hoc Distribution,Application Loader,我知道如何使用Appstore mobile provision签署应用程序,以及如何使用Appstore mobile provision重新签署临时签署的IPA。这不是我的问题 我的问题是,您能否向Appstore/iTunesConnect提交临时签署的IPA,并让其通过Apple验证,最终通过Appstore分发。为什么?这样,我就不必在每个临时签署的发行候选IPA中存储一个冗余的Appstore签署的IPA,也不必执行需要Mac机器的额外重新签署步骤 当使用应用程序加载器时,它能够发现

知道如何使用Appstore mobile provision签署应用程序,以及如何使用Appstore mobile provision重新签署临时签署的IPA。这不是我的问题

我的问题是,您能否向Appstore/iTunesConnect提交临时签署的IPA,并让其通过Apple验证,最终通过Appstore分发。为什么?这样,我就不必在每个临时签署的发行候选IPA中存储一个冗余的Appstore签署的IPA,也不必执行需要Mac机器的额外重新签署步骤

当使用应用程序加载器时,它能够发现所有愚蠢的小错误,比如缺少图标和启动图像,但即使我通过应用程序加载器上传临时签名的IPA,它也不会抱怨非appstore mobile provision(这很容易验证,就像图标一样)

我在测试中还发现,当您使用Appstore签名的IPA(除非通过Appstore分发,否则您不应将其安装在设备上)时,可以将其安装在测试设备上,前提是设备上已经有临时配置文件(相同的AppID、相同的分发证书)

所以,这让我觉得苹果只是在通过Appstore分发时去掉了移动设备

差不多3年前也有一个类似的问题(闭门),但如果它真的有效,OP从未给出答案:


我希望从那时起,有人真的尝试过它,并确认了结果。

在你的主要问题中有一些有针对性的内部问题,我会提醒大家注意每一部分——一如既往,如果我遗漏了一些东西,我会很乐意修改或澄清。我认为这只是一个被严密保护的秘密,因为它工作的大部分理由都回到了加密细节,作为支持苹果公司供应的公钥基础设施系统的一个功能——这种东西很快就变得很深,所以被一些人认为是[黑暗]魔法。希望这会对正在发生的事情有所启发

TL;DR版本

是的,您可以,但从技术上讲,它是一个不受支持的用例,可能会随时更改。这是因为iTunes Connect选择验证的信息不包括应用商店和临时分发配置文件之间的唯一区别因素。由于这在技术上是不允许的配置,我主张至少要有一个备份计划,因为苹果可能会在任何时候改变iTunes Connect验证策略,从而打破这种情况

对于好奇的人来说,下面是故事的其余部分……

您能否向Appstore/iTunesConnect提交临时签署的IPA,并使其通过Apple验证,最终通过Appstore分发[?]

从iTunesConnect和应用程序加载器的这一特定迭代(2014年9月4日/Xcode 5.1.1)开始,您可以提交一个临时签署的构建并通过管道接受。目光锐利的读者会注意到,我的“是”带有一个内置的转义图案——因为AdHoc vs App Store provisioning配置文件中编码的数据与iTunesConnect实际用于验证的这些文件的哪些部分几乎相同,临时资源调配配置文件以与同一应用程序的AppStore版本相同的方式呈现给交付管道

如果临时文件和应用商店文件之间的配置格式发生变化,以明确区分这两种类型的分发配置文件,或者如果Apple iTunesConnect工程师更改服务器端验证规则,那么这种未记录的行为很可能会停止工作。当然,我们都知道,根据《应用程序分发指南>提交您的应用程序>关于应用程序商店资源调配配置文件》中的开发者文档,我们应该使用应用程序商店资源调配配置文件()[emphasis added]:

商店分发资源调配配置文件包含与一个或多个应用匹配的单个应用ID和分发证书对于iOS应用程序,您需要商店资源调配配置文件才能提交应用程序。

…但另一条路现在还管用。如果您确实选择使用此方法,您只需要知道它不是记录在案的行为,因此可能会在任何时间点发生更改,可能不会提前通知。由于它避开了提交要求的边缘,因此,至少在苹果更改供应或iTC验证要求的情况下,最好设置一个备份计划——墨菲定律规定,这些验证更改将在最不合适的时间发生

走出“最佳实践”的肥皂盒,转向技术方面

为什么[这行得通]

您可能知道,也可能不知道,配置配置文件由1个appId、一个或多个签名证书以及零个或多个测试设备组成

相关阅读:我得到了一个较长的答案,它更详细地说明了代码设计过程的各个部分

在这种情况下,问题是“当文档中说您需要应用商店配置文件时,为什么临时配置文件可以工作?”

配置概要文件的核心部分包含一个加密签名的.plist,其中包括上面标识的信息,以及一些额外的元数据。在OS X机器上,您可以打开终端并运行:

security cms-D-i路径/to/AdHoc.mobileprovision

…并在单独的终端窗口中运行应用商店配置文件:

security cms-D-i路径/to/AppStore.mobileprovison

这些命令将把配置文件的plist部分转储到各自的终端窗口。当您滚动浏览两个窗口的内容时,您会注意到
<key>ProfileType</key>
<integer>1</integer>