首页 > 其他分享 >没有MAC电脑,如何申请苹果开发证书、上架APP Store?

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

时间:2024-07-01 14:57:45浏览次数:1  
标签:证书 ipk APP 安装包 MAC 开发者 上传 Store

【引言】 使用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/#/apdAbeb95d60iTMSTransporter是基于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 "[email protected]" -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体没小程序等开发欢迎批评交流。

标签:证书,ipk,APP,安装包,MAC,开发者,上传,Store
From: https://www.cnblogs.com/alphaair/p/18167356

相关文章

  • DWA(Dynamic Window Approach)局部路径规划算法详解及代码实现
    DWA(Dynamic Window Approach)局部路径规划算法详解及代码实现二、算法原理一句话概况,就是假定机器人当前以若干组容许范围内的速度(差速轮为例:线速度V,角速度W)进行移动,并对这若干组速度进行轨迹计算,得到若干组轨迹,再根据若干条评分机制选择最好的轨迹所对应的速度作为dwa输......
  • Azure Function App With Python 3.11
    有一段python代码,原来都跑在本地,既然functionapp可以运行python,还是比较新的python3.11,就想着直接用functionapp来跑了,省的进行sql逻辑改造,并且不吹不黑,python的pandas在处理dataframe上非常灵活。想法是好的,本地VSCODE搭起来python运行环境也很快,直接AZsignin就部署到自己......
  • uni-app编译错误:“hasInjectionContext“ is not exported by “node_modules/.pnpm/p
    1.问题背景当我们接手一个新的uni-app项目(最头疼了x_x),可能会想到删掉node_modules和pnpm-lock.yaml后,执行npminstall或npminstall重新安装依赖包,然后执行pnpmdev:mp-weixin编译,但可能会遇到如下错误:"hasInjectionContext"isnotexportedby"node_modul......
  • uniapp+thinkphp5实现微信登录
    前言之前做了微信登录,所以总结一下微信授权登录并获取用户信息这个功能的开发流程。配置1.首先得在微信公众平台申请一下微信小程序账号并获取到小程序的AppID和AppSecrethttps://mp.weixin.qq.com/cgi-bin/loginpage?url=%2Fwxamp%2Fwacodepage%2Fgetcodepage%3Ftoken%3D4180......
  • Gaming Dongle Feature Application Note
    References:GamingDongleFeatureApplicationNotedongle发送给headset的spp指令格式(PS:这部分指令的的接收可以在headset的app_dongle_spp_cback函数看到,但在dongle部分的发送指令源码似乎在sdk中看不到Σ(っ°Д°;)っ)功能实现函数headset部分//headset和dongl......
  • 3分钟手把手教Parallels Desktop for Mac 19中文破解版安装激活图文教程
    ParallelsDesktopforMac 19专为最新的Apple硬件和最新版macOS14Ventura设计,改进了基于ARM运行的Windows11的兼容性并始终保持最新状态,让用户能够不间断地完成更多工作。据介绍,Parallels最新版本旨在优化最新Apple硬件的可用性,同时还支持性能和游戏更新,为用......
  • 【转】Androidstudio报错Algorithm HmacPBESHA256 not available
     删除debug.keystone这个文件就可以了。 https://blog.csdn.net/O_PUTI/article/details/138227534 -----参考了更改GradleJDK等的办法都没有用,最终通过一个一个问题拍错解决。第一个问题:版本不一致 第二个问题秘钥获取不成功:删除这个文件 然后就编译成功了。......
  • HarmonyOS APP应用开发项目- MCA助手(Day02持续更新中~)
    简言:gitee地址:https://gitee.com/whltaoin_admin/money-controller-app.git端云一体化开发在线文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/agc-harmonyos-clouddev-view-0000001700053733-V5注:此App参照此教程进行二次修改:https://www.bilibi......
  • 苹果笔记本能玩网页游戏吗 苹果电脑玩steam游戏怎么样 苹果手机可以玩游戏吗 mac电脑
    苹果笔记本有着优雅的机身、强大的性能,每次更新迭代都备受用户青睐。但是,当需要使用苹果笔记本进行游戏时,很多人会有疑问:苹果笔记本能玩网页游戏吗?苹果笔记本适合打游戏吗?本文将讨论这两个话题,帮助你更好地了解苹果笔记本在游戏方面的表现。一、苹果笔记本能玩网页游戏吗苹......
  • Apple - Core Image Kernel Language Reference
    本文翻译整理自:CoreImageKernelLanguageReference(更新日期:2015-01-12https://developer.apple.com/library/archive/documentation/GraphicsImaging/Reference/CIKernelLangRef/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004397-CH1-SW1文章目录一......