没有MAC电脑,如何申请苹果开发证书、上架APP Store?

news/2024/7/6 0:10:49/文章来源:https://www.cnblogs.com/alphaair/p/18167356

【引言】 使用uni-app进行跨平台APP开发时,苹果ios平台最终还是要通过APP Store渠道发布,调试时uni-app基座也必须使用开发者证书签名后才能安装。对于使用MAC电脑的开发者,倒也不存在什么大障碍,照着文档操作就行,但是对于不使用MAC电脑,身边也没有MAC电脑,采购预算又紧张的开发者和团队(笔者就是这类,穷是一方面^_^,另不方便是不习惯MAC的操作、使用也不高频,故不划算),就面临着证书申请、ipk包上传两个棘手问题了。而且使用windows环境解决这两个问题,uni-app平台并没有给出解决方案,后经过笔者的一番摸索,最终找到了不使用MAC电脑,直接在windows环境下,申请苹果证书、上传ipk包到APP Store的方案,在此跟大家分享,欢迎批评指正。

一、苹果开发者账号申请

开发者账号的申请和应用标识符的配置等,不就在这里赘述了,这些可以搜索到大量完整细致的介绍文档,也可以直接参考uni-app的指定文档https://ask.dcloud.net.cn/article/152,在这里主要介绍如何在windows环境下申请证书上传ipk安装包

二、开发证书申请

在我们调试、推送、发布时都需要用到开发者证书,所以在开发开始之前,最重要的便是申请到开发者证书。而这一步我们需要借助OpenSSL工具来完成,当然若您连这个工具也不想安装,也可以使用诸如 www.myssl.com这样的在线工具来完成。

2.1、CSR文件生成

申请证书前需要生成证书申请CSR文件,也就是CertificateSigningRequest.certSigningRequest上传至苹果开发者中心,再根据CSR文件内的信息,为我们签发证书,OpenSSL替代命令如下:

A.先生成证书私钥

# 这非常重要,要妥善保管
openssl genrsa -out privatekey.key 2048

B.生成CSR文件

# privatekey.key是上一步生成的私钥
openssl req -new -sha256 -key privatekey.key -out my.csr -subj "/C=CN/ST=Beijing/L=Beijing/O=YourOrganizationName/OU=YourDepartmentName/CN=yourdomain.com"
# -C, -ST, -L, -O, -OU, -CN 分别代表国家代码、省份、城市、组织名称、部门名称和通用名称

image

这样CSR文件就生成好了,创建证书时,上传my.csr文件就可以了,这一步也可以直接使用myssl上的CSR在线生成工具,类型选择代码签名证书即可。

2.2、p12证书转换

苹果开发者证书签发成功后,是.cer格式,如ios_development.cer,而用于安装包签名,需要使用.p12格式,就需要进行一次转换,在MAC电脑下,是通过先安装.cer格式证书,再导出的方式完成的,OpenSSL替换命令如下:

# 其中private.key是2.1节生成的私钥
openssl pkcs12 -export -out output.p12 -inkey private.key -in ios_development.cer

注意: 经过笔者的测试,在OpenSSL v3版本下转换的.p12格式证书,在安装包签名时无法使用,需要使用低版本的OpenSSL转换,因为时间的关系,当时直接用低版本转换,并没有深究转换后的格式差别,应该能通过参数修正。当然也可以使用MySSL上面的在线证书转换格式直接转换成PKCS12格式。

三、ipk安装包上传

在接触IOSAPP开发前,笔者一直想当然的认为,将应用打包成.ipk安装包签好名,在提交上架APP Store时,直接在网页上传.ipk包即可^_^,没想到还必须通过开发工具上传,这个问题成了整个发布过程的最后一道拦路虎,着实恼火。
后来经过一番搜索,网上不少平台提供在线代传或桌面工具上传的产品,一番对比后发现,收费是一方面,最大的问题是要向这类工具暴露账号、证书、密钥等信息,安全性不太放心,便放弃了使用。
后经过各方找寻,苹果官方提供了iTMSTransporter命令行工具供上传等操作,其实前面提到的这类辅助工具也大多通过调用此工具来实现的上传。

3.1、下载安装iTMSTransporter

从官网下载安装最新版本的iTMSTransporter https://help.apple.com/itc/transporteruserguide/#/apdAbeb95d60 ,iTMSTransporter是基于java开发的,所以需要安装java运行时。

3.2、创建开发账号的专用密码

iTMSTransporter上传时,需要使用开发者账号的appleid的专用密码进行身份认证,所以需要先创建开发者账号的创建用密码,登录 appleid.apple.com创建。
image

3.3、创建.itmsp文件夹

  • 创建先在发布目录创建一个文件夹,如xxxx.itmsp;
  • 将打包并签名好的.ipk文件夹复制到此文件夹,如xxx.ipk
  • 在文件夹内创建一个metadata.xml的文本文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://apple.com/itunes/importer" version="software5.4"><software_assets apple_id="666666" bundle_short_version_string="1.2.0" bundle_version="15" bundle_identifier="com.xxx.xxxx" app_platform="ios"><asset type="bundle"><data_file><file_name>xxx.ipa</file_name><checksum type="md5">733747f3231774ee0e6fba5234811</checksum><size>27691282</size></data_file></asset></software_assets>
</package>

参数说明
apple_id:要发布的应用的apple id,纯数字,可以登录appstoreconnect中的【App信息】->【综合信息】中查到。
bundle_identifier:要发布的应用的bundle id,可以登录appstoreconnect中的【App信息】->【综合信息】中查到。
bundle_short_version_string:当前上传包的发行版本号。
bundle_version:纯数字,唯一版本号,每次上传版本号必须比原来大,不管是否审核通过。
<file_name>:对应刚刚拷贝进目录中的安装包文件名,如xxx.ipk
<checksum>:安装包xxx.ipk文件的校验和MD5值,可以找文件校验和生成工具生成,注意这个值每次打包后都将变化
<size>:安装包xxx.ipk文件的大小,单位Byte,可以右击.apk文件【属性】查看。
image

3.4、执行上传

iTMSTransporter -m upload -f xxx.itmsp -p SPE-SPSER -u "develop@app.com" -asc_provider XEWFWIE# -f 指定为刚刚创建的xxx.itmsp文件夹;
# -p 3.1创建的专用密码;
# -u appleid账号邮箱
# -asc_provider 开发账号的团队ID,可以登录https://developer.apple.com/account查看

四、后记

虽然iTMSTransporter上传模式,支持通过-f参数直接指定xxx.ipk这样上传,但是会提示The asset description specified is not a file: AppStoreInfo.plist错误,而.plist是无法在windows平台生成的(最起码目前版本的不支持),所以切记一定要用.itmsp文件夹加描述文件的方式。好了本次就分您分享到这,更多的uni-app、微信小程序、AI运动小程序、AI体没小程序等开发欢迎批评交流。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

知网文献下载助手 ——油猴脚本推荐

知网文献下载收费太贵了,只能逼我去找脚本来下载了。 在Greasyfork尝试了很多个脚本,坑爹的比较多,对比下来,我觉得这个“知网下载助手”比较容易用, 当然是纯免费的,需要的可以试试:知网下载助手https://greasyfork.org/zh-CN/scripts/492511

类人型自主机器人会打太极拳,但功夫很弱-斯坦福HumanPlus机器人

原文链接:https://newatlas.com/robotics/autonomous-humanoid-robot-shadows-humans/ The HumanPlus, with a 0-0 record, lands a 1, 2 left, right punch Stanford Humanplus HumanPlus以0比0的战绩,命中了1次左、右两拳。 斯坦福…

Rougamo、Fody 实现静态Aop

最近在看项目,看到别人使用Rougamo框架,好奇花了点时间仔细研究了,在这里记录一下。 0. 静态编织 Aop 首先,我们先了解什么是Aop? Aop 是指面向切面编程 (Aspect Oriented Programming),而所谓的切面,可以认为是具体拦截的某个业务点。 我们常用的aop框架是 AspectCore,…

WhaleStudio 2.6正式发布,WhaleTunnel同步性能与连接器数量再创新高!

在这个数据驱动的大模型时代,数据集成的作用和意义愈发重要。数据不仅仅是信息的载体,更是推动企业决策和创新的关键因素。作为全球最流行的批流一体数据集成工具,WhaleTunnel随着WhaleStudio 2.6版本正式发布,带来了多项功能增强和新特性,性能大幅提升,连接器和功能方面…

代码随想录算法训练营第四十二天 | 1049最后一块石头的重量II 494.目标和 474.一和零

1049.最后一块石头的重量 题目链接 文章讲解 视频讲解解题思路:将石头尽量分为相等的两堆,两堆最差即为所求结果石头的重量就是石头的价值动规五部曲:dp[j]:表示背包容量为j时可以装的石头的总价值 递推公式:dp[j] = max(dp[j], dp[j-stones[i]] + stones[i] 初始化:均初…

Apache DolphinScheduler社区又一PMC获推选通过!

PROFILE姓名:程鑫 公司:阿里云 职位:开发工程师 Github ID: rickchengx 从事领域:大数据调度系统开发 兴趣爱好:健身推举理由 他于2022年8月2日开始了他的DolphinScheduler之旅,在社区工作了将近两年,并于2023年5月12日成为Committer。成为Committer后的一年里,他继续保…

BOSHIDA 探讨DC/AC电源模块为绿色能源应用提供可靠的转换解决方案

BOSHIDA 探讨DC/AC电源模块为绿色能源应用提供可靠的转换解决方案 DC/AC电源模块是一种能够将直流电源转换为交流电源的装置。随着绿色能源的不断发展和应用,DC/AC电源模块在可再生能源、电动车辆、太阳能发电等领域中扮演着重要的角色。本文将着重探讨DC/AC电源模块为绿色能源…

Centos7 安装Rabbitmq3.9.11

安装erlang 安装依赖包yum -y install gcc glibc-devel make ncurses-devel openssl-devel xmlto perl wget gtk2-devel binutils-devel下载wget https://github.com/erlang/otp/releases/download/OTP-24.1.7/otp_src_24.1.7.tar.gz解压tar -zxvf otp_src_24.1.7.tar.gz转移到…

mysql数据库简介

一、数据库介绍 1.数据库基本概念 数据(Data) 描述事物的符号记录 包括数字,文字、图形、图像、声音、档案记录等 以“记录”形式按统一的格式进行存储 表 将不同的记录组织在一起 用来存储具体数据 数据库 表的集合,是存储数据的仓库 以一定的组织方式存储的相互有关的数据…

mac 电脑查看已安装的谷歌插件

1、打开谷歌浏览器 地址栏上面输入  chrome://version/ 2、找到 个人资料路径: /Users/admin/Library/Application Support/Google/Chrome/Default3、打开个新窗口 地址了上输入:个人资料路径 ,并找到 Extensions/ 文件夹 4、里面都是已安装的谷歌插件, 想要哪个插件…

Nordic nRF Connect SDK(NCS) VS Code 安装记录

1.Nordic SDK Nordic有2套并存的SDK:老的nRF5 SDK和新的nRF Connect SDK(NCS),两套SDK相互独立,大家选择其中一套进行开发即可。 一般而言,如果你选择的芯片是nRF51或者nRF52系列,那么推荐使用nRF5 SDK。 如果你选择的是Nordic最新产品系列,比如nRF53或者nRF9160,那么…

浅谈 K8s Service 网络机制

浅谈 K8s Service 网络机制 云原生运维圈 2024-07-01 12:03 上海 1人听过以下文章来源于腾讯云原生 ,作者王成腾讯云原生. 云原生技术交流阵地,汇聚云原生最新技术资讯、文章、活动,以及云原生产品及用户最佳实践内容。王成,腾讯云研发工程师,Kubernetes member,从事数据…

全新升级!中央集中式架构功能测试为新车型保驾护航

目前,文中所述功能测试新方案均已应用于国内多款新架构车型的研发,得到了广泛认可。 “软件定义汽车”新时代下,整车电气电气架构向中央-区域集中式发展已成为行业共识,车型架构的变革带来更复杂的整车功能定义、更多的新技术的应用(如SOA服务化、智能配电等)和更…

江门MES制造执行系统:助力工厂实现智能化管理

江门MES制造执行系统(MES)在工厂实现智能化管理方面发挥着重要作用,以下是它的一些助力方面: 实时监控与控制:江门MES系统可以实时监控生产过程中的各个环节,包括设备状态、生产进度、质量指标等,帮助工厂管理人员及时了解生产情况并做出相应的调整和控制。生产计划与排程…

搭建微信小程序

在开发小程序之前,您需要先注册微信小程序。进入小程序页面,单击前往注册,根据指引填写信息和提交相应的资料,点击注册,完成账号申请。使用申请的微信公众平台账号登录小程序后台,单击开发管理> 开发设置,可以看到小程序的AppID,请记录AppID,后续操作中需要使用。 …

《从零开始学Python》(第二版) PDF读书分享

Python 是一种面向对象、解释型计算机程序设计语言,由 Guido van Rossum 于 1989 年底发明,第一个公开发行版发行于 1991 年。Python 语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地联结在一起。 Pyt…

记一次 .NET某网络边缘计算系统 卡死分析

一:背景 1. 讲故事 早就听说过有什么 网络边缘计算,这次还真给遇到了,有点意思,问了下 chatgpt 这是干嘛的 ?网络边缘计算是一种计算模型,它将计算能力和数据存储位置从传统的集中式数据中心向网络边缘的用户设备、传感器和其他物联网设备移动。这种模型的目的是在接近数…

Cannot load from short array because sun.awt.FontConfiguration.head is null

新服务器,部署项目,使用easyExcel功能导出文件时,报错提示:Cannot load from short array because "sun.awt.FontConfiguration.head" is null,可以看到是字体文件配置引发的空指针异常; 解决方法:登录服务器,执行命令 yum install fontconfigfc-cache --for…

heap

堆块: chunk 堆是以一个个的堆块构成的,这些堆块就叫chunk chunk的大小是8字节对齐,但是一个堆块的具体大小是16字节对齐的,比如一个堆块只能是 0x40,0x50,0x60 不会是0x48这样的数据 其中一个堆块的header头部字节占16字节大小,也就是0x10字节 64位程序下的最小长度是3…

固件的提取

固件提取的三类方法:直接从官网上找到目标型号的设备固件下载 使用Telnet或者ssh从目标设备中获取固件 从开发板中的flash芯片中或者通过uart和jtag调试接口将固件提取下来JTAG(Joint Test Action Group),是一种用于测试和调试电子设备的技术标准。它使用4线或5线接口,其中…