通过fastlane打包上传到appstore

需要mac设备

一、Fastlane 安装

1、安装 Xcode command line tools:

命令行 xcode-select --install

2、安装Fastlane

命令行 brew install fastlane

3、初始化Fastlane

cd到你的需要打包的项目目录,然后执行命令

fastlane init

解释:

(1)、自动截屏。这个功能能帮我们自动截取APP中的截图,并添加手机边框(如果需要的话)

(2)、自动发布beta版本用于TestFlight

(3)、自动发布到AppStore

(4)、手动设置

我选的第四个 然后一直enter最后会生成几个文件

二、生成 deliver 文件

1、初始化Deliverfile 文件

打开终端cd到你的iOS项目根目录

执行下面命令 fastlane deliver init

如果提示你要输入Apple ID,照做就是了

然后就会多一些文件 如上图

2、编辑Deliverfile 文件

文件填充 username "你的苹果开发账号"

三、编辑Appfile 文件

1、添加下面信息

app_identifier("xxxxxxxxx") # The bundle identifier of your app

team_id("xxxxxxxx") # Developer Portal Team ID

apple_id("xxxxxxx") # Your Apple email address

itc_team_id("xxxxx") # App Store Connect Team ID

2、信息说明 及获取

app_identifier 对应app的Id

team_id 去哪里找

访问这个https://developer.apple.com/account#MembershipDetailsCard

查看这个

apple_id 你登录的邮箱

itc_team_id 这个去哪里找

https://sarunw.com/posts/fastlane-find-team-id/ 访问这个 有对应的文档

找到这里

或者直接访问 https://appstoreconnect.apple.com/WebObjects/iTunesConnect.woa/ra/user/detail

contentProviderId 这个值就是 itc_team_id

四、Fastfile文件的配置及脚本打包命令配置

1、具体代码

default_platform(:ios)

platform :ios do

desc "Description of what the lane does"

#-----------------------------------------------------------------------DEV配置

lane :build_dev do |options|

#options参数

uuid = options[:uuid] || '默认的uuId'

version_number = options[:version_number] || '1.0.0'

build_number = options[:build_number] || 100

increment_version_number(

version_number: version_number

)

increment_build_number(

build_number: build_number

)

gym(

scheme: "demo",

configuration: "Release",

clean: true,

workspace: "demo.xcworkspace",

output_directory: "./releases",

output_name: "iosAppName",

export_xcargs: "-allowProvisioningUpdates",

export_options: {

method: 'development',

provisioningProfiles: {

'app包名': uuid

}

}

)

end

#-----------------------------------------------------------------------PROD配置

lane :build_prod do |options|

uuid = options[:uuid] || '默认的uuId'

version_number = options[:version_number] || '2.0.3'

build_number = options[:build_number] || 99

increment_version_number(

version_number: version_number

)

increment_build_number(

build_number: build_number

)

currentTime = Time.new.strftime("%Y-%m-%d %H:%M:%S")

gym(

scheme: "demo",

configuration: "Release",

clean: true,

workspace: "demo.xcworkspace",

output_directory: "./releases",

output_name: "iosAppName",

export_xcargs: "-allowProvisioningUpdates",

export_options: {

method: 'app-store',

provisioningProfiles: {

'com.energy.anneng.pd': uuid

}

}

)

puts "uuid#{uuid}"

puts "version_number#{version_number}"

puts "build_number#{build_number}"

puts "上传 ipa 包到 iTunes Connect"

# deliver(

# submit_for_review: true,

# metadata_path: "./metadata",

# #跳过截图上传

# skip_screenshots: true,

# #跳过元数据上传

# skip_metadata: true,

# #跳过审核直接上传

# force: true

# )

end

end

2、关于Fastlane的打包工程代码已完成更改,脚本打包命令

开发证书 打包 的命令

fastlane ios build_dev uuid:$UUID version_number:$APP_VERSION build_number:$APP_VERSION_CODE

生产证书打包 的命令 及上传 appstore

fastlane ios build_prod uuid:$UUID version_number:$APP_VERSION build_number:$APP_VERSION_CODE

五、如何解决fastlan上传deliver 苹果的双重认证 (短信、密码)

fastlane ios build_prod 执行这个并上传的时候需要登录 校验如何篇破解?

目前采用的方案是

1、生成一个不需要进行短信认证的application specific password,这个需要到 苹果开发者中心的账号管理下进行生成 app 专用密码。注意生成后将其备份,因为页面一旦关闭将无法再次查看

访问 https://appleid.apple.com/account/manage

选中这

点击加号 下一步 保存这个application specific password字符串 后面会用到

2、执行命令 fastlane spaceauth -u [开发者账号] ,生成FASTLANE_SESSION,将其备份
3、配置环境变量

打开 终端 输入 命令 vim ~/.bash_profile

按i键进入编辑模式,输入下面信息

export FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD=[application specific password(替换为你自己的)]

export FASTLANE_SESSION=[FASTLANE_SESSION(替换为你自己的)]

上面两个字符都是你备份的只需要替换就好了

再按esc键,输入 :wq 保持并退出

执行source ~/.bash_profile使新增的环境变量生效,分别执行以下命令查看环境变量是否设置成功

echo $FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD echo $FASTLANE_SESSION

4、继续执行还是 提示错误 fastlane ios build_prod

如何解决

我们可以使用CredentialsManager重设钥匙串对应的开发者账号密码为专用密码(切记此处的密码为上面生成的专用密码)

访问这个 https://docs.fastlane.tools/advanced/other/

找到这个

Adding a Credential

执行 fastlane fastlane-credentials add --username felix@krausefx.com

会提示输入密码 这个密码就是app 专用密码

Credential felix@krausefx.com:********* added to keychain.

提示这个就是添加钥匙串成功了

Removing a Credential

fastlane fastlane-credentials remove --username felix@krausefx.com

6、这个时候再执行脚本打包命令 就可以上传到appstore 不需要 登录双重验证了

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

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

相关文章

华为云开发者日·2023年度创享峰会圆满落幕 | 开发者是底色

“ 共创科技未来,点亮智慧之光。” 文 | 云舒 编辑 | 小白 出品|极新 一场科技盛宴,汇聚了无数智慧与激情。2023年12月20日,华为云开发者日2023年度创享峰会在北京市中关村科学城东升科技园盛大举行。 华为云开发者日是面向全…

plc无线远程模块,实现PLC远程数采

在工业自动化领域,PLC(可编程逻辑控制器)的应用日益广泛。然而,传统的PLC数据采集方式通常受限于有线连接,限制了数据的灵活性和可访问性。在这个背景下,PLC无线远程模块成为了解决方案的热点。今天&#x…

飞天使-k8s知识点4-验证安装好后功能

文章目录 接k8s知识点2之验证集群功能创建dashboard验证安装nginx 并访问tomcat 访问 接k8s知识点2之验证集群功能 [rootkubeadm-master2 tmp]# kubectl run net-test1 --imagealpine sleep 36000 pod/net-test1 created [rootkubeadm-master2 tmp]# kubectl get pod NAME …

配置MUX VLAN示例(接入层设备)

一、组网需求 在企业网络中,企业所有员工都可以访问企业的服务器。但对于企业来说,希望企业内部部分员工之间可以互相交流,而部分员工之间是隔离的,不能够互相访问。为了解决上述问题,可在连接终端的交换机上部署MUX …

活动回顾 (上) | 2023 Meet TVM 系列活动完美收官

作者:xixi 编辑:三羊、李宝珠 2023 Meet TVM 年终聚会于 12 月 16 日在上海圆满落幕,本次 meetup 不仅邀请到了 4 位 AI 编译器专家为大家带来了精彩的分享,还新增了圆桌讨论环节,以更多元的视角和各位共同讨论大模型…

mysql统计函数round失效问题

mysql统计函数round失效问题 目录1、问题2、找到原因3、解决办法4、类似问题欢迎品论区补充~ 目录 1、问题 我的mysql版本为:8.1.0 我在mysql使用sum对数据统计后使用round函数进行四舍五入取整,发现像16.145这样的数字取小数后2位后是16.14而非16.15。…

模型评估方法

目录 数据集切分 交叉验证 交叉验证实例 混淆矩阵 实例 代码实现 阈值 全局阈值处理 自适应阈值处理 阈值对结果的影响 ROC曲线 数据集切分 数据集切分是指将一个数据集分割成训练集和测试集的过程。常用的方法是随机切分,即将数据集中的样本按照一定比…

小红书kos和kop有什么区别,营销玩法有哪些

相信熟悉媒介传播的朋友,对于kol和koc都不陌生。但随着平台的发展和市场的进步,又出现了kos和kop。那么小红书kos和kop有什么区别,营销玩法有哪些? 一、什么是kos和kop KOS,全称叫做Key Opinion Sales,意思…

智能变电站集中监控辅助决策系统解决方案

项目背景 智能变电站是坚强智能电网的重要基础和支撑。它不仅是电网运行数据的采集源头和命令执行单元,而且与其他环节的联系非常紧密,为统一坚强智能电网的安全和优质提供了关键支撑。为了更有效地管理和控制变电站的各种设备和子系统,如视…

FastAPI实现文件上传下载

FastAPI实现文件上传下载 1.后端FastAPI2.后端html3.效果 最近的项目需求,是前端vue,后端fastAPI,然后涉及到图像的消息发送,所以需要用fast写文件上传下载的接口,这里简单记录一下。 1.后端FastAPI import os.path i…

MySQL-2

复习 1. Data数据–>DB数据库–>DBMS数据库管理系统常见DBMS: MySQL oracle sql server db2 … redis Mongodb两大功能: 定义DDL 操纵DML 2. 表table创建表, 行和列 3. MySQL数据类型数据类型分成三大类:数值型、字符型、日期时间类4. 关于列属性…

OpenCV如何以指定分辨率打开摄像头(C++ / Python代码演示)

问题背景 使用OpenCV打开USB摄像头时经常会遇到一个问题:我的摄像头最高分辨率是1920 * 1080,为什么用OpenCV打开摄像头保存的图片每次都是640 *480?能不能以最高分辨率打开并保存图片呢? 如何解决 首先需要确认自己的摄像头支持的最大分辨率是多少,具体步骤可以参考下…