谈一谈 IPA 上传到 App Store Connect 的几种方法

2022-12-09 14:40:58 浏览数 (1)

谈一谈​

1、前言​

关于上传​

2、Xcode​

利用​

3、Application Loader​

当然,Xcode 这种方式,是需要有源代码情况下,才能上传。所以,就会有没有源代码的情况,怎么上传的情况啦!​

Application Loader 就是这样一种方式:​

Application Loader 是一款 Apple 工具能够帮助您将 App 的二进制文件上传至 App Store。​

Application Loader 上传速度快、连接稳定并且具备早期验证警告功能。​

其实,如果了解​

可能的原因,在我看来有几点。第1点是,单独维护这样一个软件,需要人力,因为,如果不依赖于 Xcode,在一台电脑只安装了 Application Loader,那个肯定需要安装 Command Line Tools 这个命令行工具,如果是安装 Xcode 默认也带上,如果更新了 Xcode 版,也会跟随升级,所以,维护 Application Loader 软件,不只是单独的一个应用入口,当然,也是因为这个 Application Loader 做了一些早期验证警告:​

第2点,Application Loader 需要的人并不多,站在开发者环境,大多数开发者负责上传 ipa 包,另外,批量上传内购品项,一定很多人不知道,所以,苹果也去掉了。开发者后台也去掉了,所以,Application Loader 现在是集成在 Xcode 中,说不定,那天就直接去掉。​

第3点,越来越多的声音,希望苹果能通过 App Store Connect 后台能直接上传 ipa 包、批量创建内购品项等功能。但根据我观察这几年的 WWDC,苹果对 App Store Connect 后台进行了比较大的改变,2022年08月23日就是对 App Store Connect 和 Apple Developer 后台,2个账号体系合并,主线上,还是整个系统性上,对于功能和UI界面上,不知道有没有相关计划。我的猜测,还是有希望的。因为近年来,跨平台开发, React Native/ Weex / Flutter,其实,可以不需要依赖 Xcode、macOS 进行开发,打包上传 ipa 却需要一台 macOS 和 Xcode,有一点不可理解?(当然,也不排除苹果希望大家因此,能多卖出几台 Mac 电脑,也许我的猜测是错的吧,但愿~)​​​

4、altool​

您可以使用​

所以,Application Loader 应用界面下,也是基于 altool 命令来处理 ipa 文件。明白了这点,对于命令行就没有什么问题啦。​

若要在上传之前验证构建版本或将有效构建版本自动上传至 Application Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/​

对于这点,如果有做过自动化打包、上传发布或​

所以,若要运行--validate-app),或者上传(--upload-app)操作:​

$ altool --validate-app -f file -u username [-p password] [--output-format xml]$ altool --upload-app -f file -u username [-p password] [--output-format xml]​

命令参数说明:​

参数命令​

详细说明​

--validate-app​

您要验证指定的 App。​

--upload-app​

您要上传指定的 App。​

-f file​

正在验证或上传的 App 的路径和文件名。​

-u username​

您的用户名。​

-p password​

您的用户密码。​

--output-format [xml / normal]​

您想让 Application Loader 以结构化的 XML 格式还是非结构化的文本格式返回输出信息。默认情况下,Application Loader 以文本格式返回输出信息。​

5、Transporter​

也许,对于一般的开发者来说,altool 已经能满足基本的上传 ipa 文件的需求。但是,正好前面说的,如果你需要进行批量创建内购品项,还有其它操作,可能大多数开发者不知道,苹果除了 iOS,还有非常多的服务, iTunes Connect 帐户(图书发行商或音乐提供商)、 iTunes Store、Apple Books,尽管我们中国地区有些服务或者非常少用。​

所以,苹果提供Transporter 来处理大量和差异化数据的操作的工具(可以在 macOS、Windows 和 Linux 操作系统上安装和运行 Transporter。):​

Transporter 是 Apple 基于 Java 的命令行工具,用于进行大量目录交付。您可以使用 Transporter 将预生成的内容以 Store 数据包的形式交付至 iTunes Store、Apple Books 和 App Store。​

不论您使用​

这里,只会介绍用Transporter 命令来上传 ipa 文件,更多的功能和说明,大家可以查看官方文档(中文)

注意: 下面命令中的 iTMSTransporter 是一个变量名,​​【重要事项】​​ 作为一名 App 开发者,您可以在已安装 Xcode 或 Application Loader 的情况下使用 Transporter,或者您也可以手动下载 Transporter。有关如何为 App 开发者安装 Transporter 的信息,​​请参见​​。​

因为我们默认都安装了Transporter 命令,我们引用 Xcode 中的 Application Loader 里的 iTMSTransporter, 在 .bash_profile 添加了一个别名,这样可以在任何目录路径调用 iTMSTransporter 命令:​

alias iTMSTransporter='`xcode-select --print-path`/../Applications/Application Loader.app/Contents/MacOS/itms/bin/iTMSTransporter' ​

注:​

  1. 1、其中 xcode-select --print-path:iTMSTransporter。​
  2. 2、当然,也可能通过设置全局环境变量来直接使用命令,添加 TRANSPORTER_HOME 环境变量。要添加 TRANSPORTER_HOME 环境变量,请在您的 .bash_profile 中添加以下行:export TRANSPORTER_HOME=。例如,如果您安装了 Xcode,则该行应如下所示:​

export TRANSPORTER_HOME=`xcode-select --print-path`/../Applications/Application Loader.app/Contents/MacOS/itms/bin​

其中,我们除了刚才说的检查和上传模式外,可能会用于这个命令的几种模式,​

  1. Lookup Metadata 模式​

检索您之前上传的某个​

iTMSTransporter -m lookupMetadata -u [user] -p [password] -apple_id(-apple_ids) -destination [output_path]​

  1. Provider 模式​

确定您有权限为哪些帐户交付内容。​

iTMSTransporter -m provider -u [user] -p [password]​

  1. Verify 模式​

验证您的​

iTMSTransporter -m verify -u [user] -p [password] -f [itmsp_path] [-vp <text | json>]​

  1. Upload 模式​

检查您的素材和​

iTMSTransporter -m upload -u [user] -p [password] -f [itmsp_path]​

关于这些模式的参数,苹果文档有非常详细的说明,虽然需要花一点的脑子去理解(文档真的很~),好了。下面简单说明一下,上传命令怎么使用吧​

  1. 上传​

iTMSTransporter -m upload -u xxx@xxx.com -p xxx -f /Users/HTC/Desktop/Upload.itmsp​

xxx@xxx.com :App Store Connect 账号 xxx :App Store Connect 账号的密码 /Users/HTC/Desktop/Upload.itmsp :这个一个目录,Upload.itmsp 是一个文件夹名字,不是文件,里面包含2个文件,一个就是要上传的 ipa 文件,另一个是一个 xml ,描述这个 ipa 文件的信息。​

ipa_metadata.xml:​

<?xml versinotallow="1.0" encoding="UTF-8"?><package versinotallow="software5.10" xmlns="http://apple.com/itunes/importer"> <software_assets apple_id="{apple_id}" app_platform="{app_platform}"> <asset type="{archive_type}"> <data_file> <size>{file_size}</size> <file_name>{file_name}</file_name> <checksum type="md5">{file_md5}</checksum> </data_file> </asset> </software_assets></package>​

需要修改​

{apple_id} :这个 ipa 文件对应的app的 apple id {app_platform} : app的平台,填写ios {archive_type} :归档类型,填写bundle {file_size} :ipa 文件的大小 {file_name} :ipa 文件的名字 {file_md5}:​

  1. 一些重要参数说明:​

参数​

说明​

-itc_provider​

检查和上传时建议加子账号的团队id,但测试发现不用 也行,先不带,因为获取很麻烦​

-errorLogs​

存储错误日志的目录​

-loghistory​

记录成功上传的数据包​

-outputFormat xml​

以 XML 格式返回输出信息​

-throughput​

显示成功上传数据包的总传输时间以及数据包大小和每秒字节数​

[-o ]​

记录输出信息​

[-v ]​

日志级别,默认eXtreme,详细​

-vp​

在验证或上传数据包文件时显示进度信息​

[-Xmx4096m]​

指定 4 GB Java 虚拟机 (JVM) 堆栈内存​

总结​

最后,这就是几种上传ipa包的方法,当然,如果经验丰富的开发者,可能使用过 fastlane 、shenzhen 这样的自动化工具命令,也是可以上传 ipa 文件,如果你研究过它们的源代码,你就会发现,他们使用的命令就是 iTMSTransporter,这也正是,我想写这篇文章的原因。现在大家在开发过程中,一直想提升自己,想进阶,想成为高手,然而找不到途径?我希望,大家不要忽视开发过程的每一个重要的环节,这就是进阶的途径!愿大家都能感悟达到~​

最后的最后,想说一下最近不怎么更新博客的原因?除了比较忙外(什么时候闲!),写好一篇文章,需要去考查相关的资料和知识,对每一行文字,都要精斟细酌,因为当我看到博客的访问量越来越多人时,为了不误导大家,所以需要承担的责任感觉也大了。这也是写文章的好处吧,除了整理思维,体系构建,表达自己,还有分享,责任,担当中国IT技术传承的一份子,安乐~​

finally,五一快乐!致敬劳动者!​

0 人点赞