微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

iOS App怎么上架到苹果TestFlight?

下面就给大家详细讲解如何上架苹果TestFlight

环境: IDE xcode 11.3.1 (11C504)

1、确认您的xcode能顺利编译通过

2、Project-Archive

xcode会自动编译并且打包,并且完成后会弹出Archive对话框

3、点击右侧的Validate App

自动连接App Store Connect来进行初步的验证。

勾选Strip Swift symbols来 减少 app size

4、选择发布的证书来完成发布(这个要在http://developer.apple.com的account中设置)

好了,下面就会自动检测了,如果不通过会给你一些提示。按提示修改再次打包就可以了。

下面讲一下,我碰到的问题:

A valid provisioning profile for this executable was not found

字面意思就是app没有一个有效的配制文件

这里要说到一些概念:

Certificates,Identifiers & Profiles

Certificates:证书

Identifies:app的bundle identifier(图1)

Devices:测试设备(比如说你的iphone,ipad等等)

Profiles: 对证书、bundle identifier,devcies的一个总结吧,也就是包括了这些信息,这样你的xcode,还有苹果app store connect才会通过您的认证,

这样你才可以安装到你的测试设备上,或者发布到testflight(公测),最好上架到app store去供用户购买。

证书可以通过xcode来生成:Xcode - Preferences

开发、发布,根据情况来建立。

图1

在苹果开发者网站上,可以建一个app id ( Application Id)

注册一个App IDs:

加入一个测试手机:

这点,点击download,下载您的设置到本地,然后双击,这样xcode就可以认到了。

这样的话,基本上就完成了设置工作。

下面我们来看一下xcode中,是如何设置的。

Debug与Release设置是一样的,配制文件不一样,一个选择dev,一个选择release。

还有一个地方也是报错,也是我碰到的

最后还得搞一张图,打包的时候一直报错,大体是这样的错,但都跟 libPods-工程名.framework有关系:

1、Invalid Swift Support : The file 工程.app/Frameworks/libPods-工程.framework doesn't have the corrent file type for this location.

2、Invalid Bundle Structure: The binary file '工程.app/Frameworks/libPods-工程.framework' is not permitted. Your app can't contain standalone

executables or libraries,other than a valid CFBundle Executable of Supprted bundles.

以上是我记忆中的解决方法及打包发布到testflight应该处理的。

时间一长就会忘记,还是记录下,当然如果您碰到了相关的问题,希望能帮到您。

不当之处,可以相互学习,共同提高。

下面讲一下打包成功后,上传到Apple Store Connect

打包成功后,可以导出来

然后选择发布证书,然后就可以导出来了。

导出来以后,会有一个ipa文件,这个文件就是我们需要上传文件,可以安装一个Transporter

第一次打开用您的app id登录,然后将导出的ipa文件,直接拖进去,然后一般通过了Validate App的话,

直接拖进去就可以了,然后再点提交。

提交完后,apple会在很短的时候里,给你回邮件email,还给我发了几个需要调整的地方:

ITMS-90683: Missing Purpose String in Info.plist - Your app's code references one or more APIs that access sensitive user data. The app's Info.plist file should contain a NSBluetoothPeripheralUsageDescription key with a user-facing purpose string explaining clearly and completely why your app needs the data. Starting Spring 2019,all apps submitted to the App Store that access user data are required to include a purpose string

这个意思其实很简单:就是你用的权限中没有明确的指出干嘛用的,也就是在value里面加入一个说明即可

比如,蓝牙是用来连接打印机的

到此上传到App Store Connect就成功了,到此,还需要登录http://developer.apple.com -- Account

打开会员中心,然后点击App Store Connect,去构建您的项目,这样就可以提交到TestFlight

让专业人员去帮你审核了,审核通过,都会给你发Email。

只要在App Store Connect后台加入测试人员的email

如果没有收到email的话,可以再点击发送邀请,这样就会收到一封邀请,

1)打开邮件,您会看到一个TestFlight前往的按钮,点一下,就会弹出来一个对话框,里面有一个邀请码,拷贝。

2)然后在手机上的TestFlight “兑换”,帖上您的邀请码,确认。

3)然后就可以看到待安装的App了,安装,打开,输入账号密码,开启测试。

下面我们再来看看mac,xcode,手机,开发者服务(apple),这些家伙究竟是咱根据证书还有配制文件

来处理一些下载到手机安装,打包发布等等工作的。

Code Signing Identity 是咱个工作原理,这里帖个图:

Xcode 中配置的 Code Signing Identity(entitlements、certificate)必须与 Provisioning Profile 匹配,

并且配置的 Certificate 必须在本机 Keychain Access 中存在对应 Public/Private Key Pair,否则编译会报错。

Xcode 所在的 Mac 设备(系统)使用 CA 证书(WWDRCA.cer)来判断 Code Signing Identity 中 Certificate 的合法性:

若用 WWDRCA 公钥能成功解密出证书并得到公钥(Public Key)和内容摘要(Signature),证明此证书确乃 AppleWWDRCA 颁布,即证书来源可信; 再对证书本身使用哈希算法计算摘要,若与上一步得到的摘要一致,则证明此证书未被篡改过,即证书完整。

Verify Code Signature with Certificate

iOS/Mac 设备(系统)使用 App Provisioning Profile(Code Signing Identity)中的开发证书来判断App的合法性:

若用证书公钥能成功解密出 App(executable bundle)的内容摘要(_CodeSignature),证明此 App 确乃认证开发者发布,即来源可信; 再对 App(executable bundle)本身使用哈希算法计算摘要,若与上一步得到的摘要一致,则证明此 App 未被篡改过,即内容完整。

总结

  • 基于 Provisioning Profile 校验了 CodeSign 的一致性;

  • 基于 Certificate 校验 App 的可靠性和完整性;

  • 启动时,真机的 device ID(UDID)必须在 Provisioning - Profile 的 ProvisionedDevices 授权之列。

  • 无论是 Xcode 对 APP 进行签名打包还是真机运行 APP 进行校验,都使用了基于证书体系的非对称加密机制。

我的理解:

1、我们在xcode中进行了配制,这样xcode就可以通过我们提供的Provisioning Profile证书来安装APP到手机上,

手机上也会有一份这样的配制,不然,启动APP的时候也不会成功。

还记得以前用免费的APP ID进行开发的时候,有时候第二天就过期,有时候过个3,5天过期,一点就一闪,其实是证书过期了,

每次安装APP的时候,都会连网去验证合法性。

2、一般情况下,只要配制到位了,那肯定不会有Validate App不通过的情况,也就是说不通过一般是配制不到位,不是这里少了,就是这里多了。

或者比如说我们手工设置了,就不要让xcode自动生成了。

这样懂得了原理,我们工作就可以事半功倍了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐