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

news2025/1/13 17:42:10

谈一谈​

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 电脑,也许我的猜测是错的吧,但愿~)​

具体关于​​https://help.apple.com/itc/apploader/​​​

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 文件,更多的功能和说明,大家可以查看官方文档(中文):​​https://help.apple.com/itc/transporteruserguide/​​​

注意: 下面命令中的 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,五一快乐!致敬劳动者!​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/74657.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ET框架解读其一

ECS&#xff1f; 真正的ECS属于是entity-component-system组件里面只有数据没有方法&#xff0c;system里面是针对组件的方法&#xff0c;system通过查找只需要关注自己想关注的组件集合就可以。但是ET框架的代码在组件里面写满了方法&#xff0c;有数据又有方法的组件&#x…

Spire.Doc for Java 10.12.2 update Word to PDF/HTML to Word

谷歌找破解版Spire.Doc for Java is a professional Word API that empowers Java applications to create, convert, manipulate and print Word documents without dependency on Microsoft Word. By using this multifunctional library, developers are able to process co…

并发编程概述 和 并行编程(Parallel Framework)

任务&#xff08;task&#xff09; 异步编程&#xff08;async&await&#xff09; 并发编程概述 前言 说实话&#xff0c;在我软件开发的头两年几乎不考虑并发编程&#xff0c;请求与响应把业务逻辑尽快完成一个星期的任务能两天完成绝不拖三天&#xff08;剩下时间各种…

HPPH-SiO2 NPs/PEG/DSPE光克洛修饰介孔二氧化硅纳米粒子/聚乙二醇/磷脂的研究

小编这里分享的科研知识是HPPH-SiO2 NPs/PEG/DSPE光克洛修饰介孔二氧化硅纳米粒子/聚乙二醇/磷脂的研究&#xff0c;来看&#xff01; 光克洛修饰介孔二氧化硅纳米粒子的研究&#xff1a; 光敏剂的研发历经以卟吩姆钠为代表的第一代卟啉类光敏剂到以维替泊芬,他拉泊芬和替莫泊芬…

揭秘!女程序员为啥更赚钱?这4个大招,用Python做副业躺赚

关于穷&#xff0c;去年有了一个更学术的说法&#xff1a;隐形贫困人口。 就是因为有太多“种草达人”&#xff0c;让我们为了物质生活超前消费&#xff0c;再加上不理财的话&#xff0c;那简直是雪上加霜。 看到知乎上面最近有一个很火的问题&#xff1a; “90后的你&#…

为了学会更多炫酷的 canvas 效果,我熬夜复习了三角函数相关的知识点

稳定性建设之JavaScript代码不能被阻断 背景 js代码可能会因为某些原因&#xff0c;导致出错&#xff0c;进而整个后续代码有可能都被阻断。直接影响线上的稳定性 最常见的js被阻断的情况 console.log(111) // 预期 a {} // 结果 a undefined a.a 1 console.log(222) // …

web前端期末大作业 HTML游戏资讯网页设计制作 简单静态HTML网页作品 DW游戏资讯网页作业成品 游戏网站模板

&#x1f389;精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业…

CTO职位刚发布,一天收到100+份简历

IT行业卷可是没有想到这么卷&#xff0c;我们公司最近招聘CTO&#xff0c;一天收到100份简历&#xff0c;这里面有太多优秀的人&#xff0c;简直挑花了眼。这里面有英国毕业的&#xff0c;有北京大学的&#xff0c;还有各种985和211毕业的大学生&#xff0c;简历也是非常的丰富…

总结717

大三上半学期过去了。回想起当初那个暑假还在纠结的问题。如今&#xff0c;我也算是想通了。 回想起这样一个夜晚&#xff0c;我与好几位同学在谈论考研的事情。其中有一位同学问&#xff1a;“所以&#xff0c;你们为什么要考研呢&#xff1f;”有的同学说是“想到名校走走”…

【C++常用容器】STL基础语法学习stack容器

目录 ●stack基本概念 ●stack常用接口 ●构造函数 ●赋值操作 ●数据存取 ●大小操作 ●stack基本概念 简要介绍&#xff1a; stack是一种先进后出或后进先出的数据结构&#xff0c;它只有一个出口。栈中只有顶端元素才可以被外界使用&#xff0c;因此栈不允许有遍历行为。栈…

对vue的mixin的理解,有什么应用场景?

mixin是什么 Mixin是面向对象程序设计语言中的类&#xff0c;提供了方法的实现。 其他类可以访问mixin类的方法而不必成为其子类 当一段代码非常相似的时候就可以抽离成一个mixin mixins是一个js对象&#xff0c;它可以包含我们组件中script项中的任意功能选项&#xff0c;…

不是所有国产软件都像360一样流氓!这些良心国产软件不该被埋没

提到国产软件&#xff0c;很多人第一反应——360安全卫士。 但就像那句著名点评&#xff1a;“电脑上的常见问题有一半是安装360可以解决的&#xff0c;另一半是卸载360可以解决的。” 360可以说让人又爱又恨&#xff0c;强大的杀毒能力毋庸置疑&#xff0c;但是捆绑安装也是…

java计算机毕业设计基于安卓Android的学生个人支出管理APP

项目介绍 基于APP的学生个人支出管理系统主要针对广大学生,本设计分为用户客户端和管理员后台管理,前台用户管理使用Android Studio制作,使用了JS、HTML和uniapp开发框架,后台管理使用JAVA&#xff1a;MySQL数据库来保存数据以及上传数据。MySQL体积小、速度快,为数据的存储和…

用Python机器人监听微信群聊, 我看谁这么大的胆子敢调侃老板和前台小姐姐!

随着微信社交的兴起&#xff0c;我们加入的群也越来越多&#xff0c;一个不经意就被拉入好几个群&#xff0c;群是大家协同交流的平台&#xff0c;但是微信群却越来越泛滥&#xff0c;不知道大家有没有统计过自己浪费在毫无营养的群中的时间&#xff1f; 因为群质量太低或者群太…

Web页面测试

一、Web的功能测试 1、超链接测试 a、链接与链接的说明文字要匹配 &#xff08;注&#xff1a;也可以是图片&#xff09; b、链接的文字要描述正确 c、链接的文字要精简有效 d、链接的页面应该存在&#xff0c;不应该出现404找不到页面的错误 e、没有孤立页面&#xff0c;只有…

Android kotlin 基础知识codelab Fragment Summary

创建 fragment 在此 Codelab 中&#xff0c;您向 AndroidTrivia 应用添加了一个 fragment&#xff0c;在本课的后续两个 Codelab 中您将继续在此应用中执行操作。 fragment 是 activity 的模块化部分。fragment 有自己的生命周期&#xff0c;会接收自己的输入事件。使用 <…

宝宝经常吐奶,除了拍嗝,这6个细节也不容忽视,别因小失大

众所周知&#xff0c;宝宝吐奶是很常见的。不过&#xff0c;虽然很常见&#xff0c;但只要宝宝吐奶&#xff0c;尤其是宝宝吐奶时&#xff0c;家长们都会非常心疼&#xff0c;迫不及待地想代替宝宝承受这些不适。为什么宝宝这么容易吐奶&#xff1f;首先&#xff0c;宝宝的胃是…

JQuery 基础

JQuery对象和JS对象区别与转换 1. JQuery对象在操作时&#xff0c;更加方便。 2. JQuery对象和js对象方法不通用的. 3. 两者相互转换 * jq -- > js : jq对象[索引] 或者 jq对象.get(索引) * js -- > jq : $(js对象) <script>//1.通过…

定时执行专家 —— 模拟键盘按键、鼠标单击功能发布(可发送快捷键、热键、鼠标左键多次单击)

目录 ◆ 定时执行专家 —— 模拟键盘按键 ◆ 定时执行专家 —— 模拟鼠标单击 ◆ 定时执行专家 —— 模拟键盘按键 - 设置方法 &#xff08;1&#xff09;点击 “定时执行专家” 工具栏 “新建” 图标&#xff0c;打开 “任务对话框”&#xff08;图1&#xff09;&#xff1…

Spring中的Bean的实例化

Bean的实例化1. Bean的配置2.Bean的实例化2.1 构造器实例化2.2 静态工厂方式实例化2.3 实例工厂方式实例化1. Bean的配置 Spring 可以被看作是一个大型工厂&#xff0c;这个工厂的作用就是生产和管理 Spring 容器中的Bean。如果想要在项目中使用这个工厂&#xff0c;就需要开发…