【iOS】Fastlane一键打包上传到TestFlight、蒲公英

Fastlane一键打包上传到TestFlight、蒲公英

  • 前言
  • 一、准备
  • 二、探索
    • 一、Fastlane配置
      • 1、Fastlane安装
      • 2、Fastlane更新
      • 3、Fastlane卸载
      • 4、查看Fastlane版本
      • 5、查看Fastlane位置
      • 6、Fastlane初始化
    • 二、Fastlane安装蒲公英插件
    • 三、Fastlane文件编辑
      • 1、Gemfile文件
      • 2、Appfile文件
      • 3、Fastfile文件
        • 1、递增build号
        • 2、任务配置
      • 4、Pluginfile文件
    • 四、项目工程配置Fastlane
        • 1、递增版本号配置
        • 2、修改info.plist File路径
    • 五、Fastlane执行
      • 2、账号权限
  • 三、总结
  • 四、常见问题归纳

前言

  • 废话不多说,能知道fastlane的,代表您已经对fastlane的用处有了初步了解,并且想使用在自己项目中,本文只适用于iOS项目的fastlane配置(Android端未验证),直接开始配置。

一、准备

  • Ruby环境,CocoaPods环境, 蒲公英官网
  • 打正式包上传testflight过程中需要输入密码,对于开启了双重认证的账户需要去 ,申请专属密码app专属密码申请
  • iOS开发必须要知道的基础开发环境配置,终端执行pod env
    在这里插入图片描述
  • 登录蒲公英,获取api_key,复制备用
    在这里插入图片描述

二、探索

一、Fastlane配置

1、Fastlane安装

  • 终端执行以下命令以安装Fastlane
    需要配置的安装:
sudo gem install fastlane
  • 快速安装:
sudo gem install fastlane -NV

执行完成后出现以下字样即为安装成功
在这里插入图片描述

2、Fastlane更新

以下两种终端更新Fastlane方式,使用一种即可:

  • 方式一:
bundle update fastlane
  • 方式二:
fastlane update_fastlane

3、Fastlane卸载

  • 终端执行以下命令来卸载Fastlane
sudo gem unstall fastlane

4、查看Fastlane版本

  • 执行以下命令查看Fastlane版本,以验证
fastlane --version

在这里插入图片描述

5、查看Fastlane位置

which fastlane

6、Fastlane初始化

  • 终端cd到项目工程根目录下,执行以下命令,来初始化fastlane
fastlane init
  • 项目工程里会创建出fastlane文件夹、Gemfile和Gemfile.lock
    在这里插入图片描述
  • fastlane init过程中有些需要输入开发者账号密码,后续可通过以下命令重新登录账号。
fastlane cert create

二、Fastlane安装蒲公英插件

  • 终端执行以下命令来安装蒲公英插件
fastlane add_plugin pgyer
  • 执行过程中出现以下内容,是为了在Gemfile文件里面写入Pluginfile内容,输入y按回车
Plugin 'fastlane-plugin-pgyer' was added to './fastlane/Pluginfile'
[10:08:29]: It looks like fastlane plugins are not yet set up for this project.
[10:08:29]: fastlane will modify your existing Gemfile at path 'Gemfile'
[10:08:29]: This change is necessary for fastlane plugins to work
[10:08:29]: Should fastlane modify the Gemfile at path 'Gemfile' for you? (y/n)
  • 出现以下内容即为安装蒲公英插件成功
    在这里插入图片描述

三、Fastlane文件编辑

1、Gemfile文件

一般安装好蒲公英插件和fastlane初始化后会默认生成

source "https://rubygems.org"gem "fastlane"gem "cocoapods"plugins_path = File.join(File.dirname(__FILE__), 'fastlane', 'Pluginfile')
eval_gemfile(plugins_path) if File.exist?(plugins_path)

2、Appfile文件

一般安装好蒲公英插件和fastlane初始化后会默认生成,可以按需求修改,个人的Apple ID方便接收AppStore上传及审核信息

app_identifier("com.xxx.xxx") #app的bundleID 
apple_id("xxx@xxx.com") #个人的Apple ID,邮箱itc_team_id("xxxxxx") #App Store的团队ID App Store Connect Team ID
team_id("xxxxxx") #团队ID Developer Portal Team ID
branch ENV['xxxxxx'] #分支
# For more information about the Appfile, see:
#     https://docs.fastlane.tools/advanced/#appfile

3、Fastfile文件

Fastfile文件为核心配置文件,需要编辑打包流程到信息,每一个功能块由 ==lane: xxx do ==开头 end 结尾

1、递增build号

定义一个递增build号的函数,添加到Fastfile中

def updateProjectBuildNumbercurrentTime = Time.new.strftime("%Y%m%d")
build = get_build_number()
if build.include?"#{currentTime}."# => 为当天版本 计算迭代版本号lastStr = build[build.length-2..build.length-1]lastNum = lastStr.to_ilastNum = lastNum + 1lastStr = lastNum.to_sif lastNum < 10lastStr = lastStr.insert(0,"0")endbuild = "#{currentTime}.#{lastStr}"
else# => 非当天版本 build 号重置build = "#{currentTime}.01"
end
puts("*************| 更新build #{build} |*************")
# => 更改项目 build 号
increment_build_number(
build_number: "#{build}"
)
end
2、任务配置
  • 以下为任务配置信息仅供参考(请切换为属于你的专属信息):
#fastlane版本号
fastlane_version "2.216.0"
#打包平台
default_platform :ios#指定项目的scheme名称 ---- 修改
scheme="xxx"
#蒲公英api_key和user_key ---- 修改
api_key="xxx"
user_key="xxx"# 任务脚本
platform :ios dodesc "以 development 方式打包并上传到蒲公英"lane :test_beta doputs "以 development 方式打包"gym(# 指定打包所使用的输出方式 (可选: app-store, package, ad-hoc, enterprise, development)export_method: "development",# 指定项目的 scheme 名称scheme: "xxx",# 指定输出的文件夹地址output_directory: "./archive/test_beta/" + Time.new.strftime("%Y-%m-%d-%H:%M:%S"),)puts "上传 ipa 包到蒲公英"pgyer(# 蒲公英 API KEYapi_key: "xxx",# 蒲公英 USER KEYuser_key: "xxx")enddesc "以 ad-hoc 方式打包并上传到蒲公英"lane :beta doputs "自动生成 Provisioning Profiles 文件"sigh(# 指定输出的文件夹地址output_path: "./archive/sign",# 是否为 AdHoc 证书(设为 false 或不写默认为 AppStore 证书)adhoc: true)puts "以 ad-hoc 方式打包"gym(# 指定打包所使用的输出方式 (可选: app-store, package, ad-hoc, enterprise, development)export_method: "ad-hoc",# 指定项目的 scheme 名称scheme: "xxx",# 指定输出的文件夹地址output_directory: "./archive/beta/" + Time.new.strftime("%Y-%m-%d-%H:%M:%S"),# 指定打包方式 (可选: Release, Debug)configuration: "Release")puts "上传 ipa 包到蒲公英"pgyer(# 蒲公英 API KEYapi_key: "xxx",# 蒲公英 USER KEYuser_key: "xxx")enddesc "以 app-store 方式打包并上传到 iTunes Connect"lane :release doputs "自动生成 Provisioning Profiles 文件"sigh(# 指定输出的文件夹地址output_path: "./archive/sign")puts "以 app-store 方式打包"gym(# 指定打包所使用的输出方式 (可选: app-store, package, ad-hoc, enterprise, development)export_method: "app-store",# 指定项目的 scheme 名称scheme: "xxx",# 指定输出的文件夹地址output_directory: "./archive/release/" + Time.new.strftime("%Y-%m-%d-%H:%M:%S"),# 指定打包方式 (可选: Release, Debug)configuration: "Release")puts "上传 ipa 包到 iTunes Connect"deliver(# 跳过截图上传skip_screenshots: true,# 跳过元数据上传skip_metadata: true,# 跳过审核直接上传force: true)end
end

以上配置完成就可以在本地终端进行打包了,

  • export_method是在Fastlane工具中使用的命令,指定导出iOS应用存档的方法,以及可用的配置文件和签名证书。
    以下是几种导出存档方法:
    • app-store:提交到应用商店的存档
    • development:用于开发目的的存档
    • ad-hoc:用于分发给有权限的设备或用户的存档
    • enterprise:公司内部网络分发的存档
  • configuration构建方式:分Release和Debug
  • scheme:
    在这里插入图片描述
  • output_directory:输出文件夹地址
  • desc、puts:信息描述

打开终端进入到项目fastlane文件夹上一级,输入以下命令即可打一个以 development 方式打包并上传到蒲公英的包。

fastlane test_beta

4、Pluginfile文件

一般安装好蒲公英插件后会默认生成

# Autogenerated by fastlane
#
# Ensure this file is checked in to source control!gem 'fastlane-plugin-pgyer'

四、项目工程配置Fastlane

1、递增版本号配置
  • 修改Build Settings中的Versioning配置,Current Project Version随便填一个,Versioning System选择Apple Generic
    在这里插入图片描述
2、修改info.plist File路径

把项目工程中所有的info.plist文件的路径中带有SRCROOT的路径全部改成相对路径,要不然会报错。

在这里插入图片描述

五、Fastlane执行

做 fastlane 命令的时候都是在项目的根目录下进行的,打开终端进入到项目fastlane文件夹上一级。

  • 1,获取到所有的 lane
fastlane lanes

2、账号权限

  • 1,Adding a Credential(添加凭证)
    //输入命令:
fastlane fastlane-credentials add --username felix@krausefx.com

//会自动要求输入密码:App-Specific Passwords
Password: *********(这里就是要输入刚刚生成的App-Specific Passwords)

如果手动输入错误:请执行以下命令:删除账号,再重复添加凭证,完成添加

  • 2,Removing a Credential(移除凭证)
fastlane fastlane-credentials remove --username felix@krausefx.com

//password has been deleted.

三、总结

工具的使用没有什么技术含量,想研究fastlane代码可参考github

四、常见问题归纳

  • 1,账号权限问题,重复一下上面账号权限模块,移除凭证,添加凭证的命令步骤
[!] Error uploading ipa file:[Application Loader Error Output]: Error uploading '/var/folders/sp/_4jyc68d0hvbm70nm50ljvvw0000gp/T/3a982536-cad1-483e-8b64-5c74740a168f.ipa'.
[Application Loader Error Output]: Unable to upload archive. Failed to get authorization for username 'xxx@126.com' and password. (
[Application Loader Error Output]: The call to the altool completed with a non-zero exit status: 1. This indicates a failure.

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

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

相关文章

edge 浏览器插件 demo --chatGpt

gpt: 要开发 Edge 浏览器插件&#xff0c;你可以使用基于 Web 技术的扩展框架。Edge 使用的扩展框架与 Chrome 的扩展框架非常类似&#xff0c;因为它们都基于 Chromium 内核。下面是一个简单的 Edge 浏览器插件示例&#xff0c;演示如何创建一个基本的插件&#xff0c;该插件…

gateway接口参数加解密

上篇介绍了多种加解密的使用java加密使用 本篇主要介绍在gateway网关中使用对参数解密和返回数据进行加密的操作 原理 下面使用的是AES加密 SHA1withRSA加签 1-用户使用拿到的AES秘钥和RSA私钥。对数据进行加密和加签 2-进行验签和时间的检验 3-将解密的数据返回到具体的调用…

Jetson Orin NX 开发指南(8): Mavros 的安装与配置

一、前言 由于 Jetson 系列开发板常作为自主无人机的机载电脑&#xff0c;而无人机硬件平台如 PX4 和 ArduPilot 等通过 MAVLink 进行发布无人机状态和位姿等信息&#xff0c;要实现机载电脑与 MAVLink 的通信&#xff0c;必须借助 Mavros 功能包&#xff0c;因此&#xff0c;…

服务器数据恢复-VMWARE ESX SERVER虚拟机数据恢复案例

服务器数据恢复环境&#xff1a; 几台VMware ESX SERVER共享一台某品牌存储&#xff0c;共有几十组虚拟机。 服务器故障&#xff1a; 虚拟机在工作过程中突然被发现不可用&#xff0c;管理员将设备进行了重启&#xff0c;重启后虚拟机依然不可用&#xff0c;虚拟磁盘丢失&#…

设计模式01———简单工厂模式 c#

首先我们打开一个项目 在这个初始界面我们需要做一些准备工作 建基础通用包 创建一个Plane 重置后 缩放100倍 加一个颜色 任务&#xff1a;使用【简单工厂模式】生成四种不同怪物 【按不同路径移动】 首先资源商店下载四个怪物模型 接下来我们选取四个怪物作为预制体并分别起名…

产品经理进阶:如何写商业计划书?

目录 简介 确定目标 确定目标市场 竞争分析 CSDN学院 作者简介 简介 很多时候&#xff0c;我们缺乏的并不是创意。 因为任何人都可能会萌发出一个好的创意。 但是&#xff0c;将想法变成可行的业务就完全是另一码事了。 你可能会认为你自己已经做好充分准备&#xff0…

ARM作业2

.设置按键中断&#xff0c;按键1按下&#xff0c;LED亮&#xff0c;再按一次&#xff0c;灭 按键2按下&#xff0c;蜂鸣器响。再按一次&#xff0c;不响 按键3按下&#xff0c;风扇转&#xff0c;再按一次&#xff0c;风扇停 头文件key_it.h #ifndef __KEY_IT_H__ #define …

使用 ErrorStack 在出现报错 ORA-14402 时产生的日志量

0、测试结论&#xff1a; 测试结果&#xff1a;设置 ErrorStack 级别为 1 时产生 Trace 的日志量最小&#xff0c;大小为 308K&#xff0c;同时在 alert 日志中也存在记录。 1、准备测试数据&#xff1a; sqlplus / as sysdba show pdbs alter session set containerpdb; …

git rebase与git merge图文详解(一文看懂区别)

git rebase与git merge图文详解 大家在工作中团队开发的时候对于拉取分支和合并代码时就会涉及到两种选择&#xff0c;git rebase与git merge&#xff1a; rebase&#xff1a;变基&#xff0c;会有一个干净的分支&#xff0c;但是对于记录来源不够清晰merge&#xff1a;合并&am…

Restclient-cpp库介绍和实际应用:爬取www.sohu.com

概述 Restclient-cpp是一个用C编写的简单而优雅的RESTful客户端库&#xff0c;它可以方便地发送HTTP请求和处理响应。它基于libcurl和jsoncpp&#xff0c;支持GET, POST, PUT, PATCH, DELETE, HEAD等方法&#xff0c;以及自定义HTTP头部&#xff0c;超时设置&#xff0c;代理服…

iPhone 如何强制重启

参考iPhone的官方使用手册 传送门 尤其当 iPhone 未响应&#xff0c;也无法将其关机再开机&#xff0c;此方法最有效&#xff1a; 按住调高音量按钮&#xff0c;然后快速松开。按住调低音量按钮&#xff0c;然后快速松开。按住侧边按钮。当 Apple 标志出现时&#xff0c;松开侧…

SQL 常见函数整理 _ PATINDEX

1. 用法 用于查找字符串中指定模式的首个匹配项&#xff0c;并返回该匹配项的起始位置。 2. 语法 PATINDEX(%pattern%, expression)参数说明&#xff1a; pattern 是要查找的模式&#xff0c;可以包含通配符 % 表示任意字符出现任意次数&#xff0c;也可以使用字符类 […]、字…

分类预测 | MATLAB实现KOA-CNN-GRU开普勒算法优化卷积门控循环单元数据分类预测

分类预测 | MATLAB实现KOA-CNN-GRU开普勒算法优化卷积门控循环单元数据分类预测 目录 分类预测 | MATLAB实现KOA-CNN-GRU开普勒算法优化卷积门控循环单元数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现KOA-CNN-GRU开普勒算法优化卷积门控循环单…

某快递公司Java一面

1.平衡二叉树和红黑树的区别&#xff1f; 平衡二叉树是一种二叉搜索树&#xff0c;其左子树和右子树的高度差不超过1&#xff0c;以确保在最坏情况下的查找效率是O(log n)。而红黑树是一种自平衡二叉搜索树&#xff0c;通过引入颜色标记&#xff08;红色和黑色&#xff09;来维…

大模型评测指标与方法

中文大模型评测和英文评测方法是不一致的&#xff0c;原因&#xff1a; 第一、数据集的差异性。中文和英文的文本数据集在种类、规模、质量等方面存在很大的差异&#xff0c;需要针对中文特点开发相应的数据集&#xff0c;以确保评测结果的准确性和公正性。 第二、语言结构和…

Redis通用指令和五大基本数据类型常用指令总结

通用指令 keys parttern 查询key (parttern即通配符&#xff0c;不是正则表达式&#xff0c;例如 keys a? 匹配以a开头的长度为2的key) del key 删除key exists key 获取key是否存在 type key 获取key的类型 expire key seconds 为指定key设置有效期&#xff0c;单位秒 …

Spring ApplicationListener监听器用法

ApplicationListener ApplicationListener是Spring框架中的一个接口&#xff0c;用于监听Spring应用程序中的事件。当应用程序中发生事件时&#xff0c;ApplicationListener会自动触发相应的回调方法&#xff0c;从而实现对事件的处理。 在Spring Boot中&#xff0c;常见的事件…

Harmony ArkTS语言

ArkTS语言 前言正文一、声明式UI二、数据列表① 创建ArkTS文件② 添加资源③ 样式④ 组件⑤ 标题组件⑥ 列表头组件⑦ 列表Item组件⑧ 组件生命周期⑨ 渲染列表数据⑩ 单选 三、源码 随着华为宣布鸿蒙后续的版本不再兼容Android应用之后&#xff0c;对于现在的开发环境来说有一…

Java BIO模型分析(提供单线程和多线程服务端代码示例)

目录 一、BIO特点介绍二、BIO代码实现2.1、客户端代码准备2.2、服务端单线程处理2.2.1、服务端代码2.2.2、阻塞代码分析2.2.3、存在问题 2.3、服务端多线程处理2.3.1、服务端代码2.3.2、存在问题 一、BIO特点介绍 BIO(blocking I/O)&#xff1a;同步阻塞IO&#xff0c;在每个I…

【总结】kubernates crd client-java 关于自定义资源的增删改查

Java model 准备 首先使用 crd.yml 和 kubernetes CRD 自动生成 Java model 类&#xff0c;这是一切的前提&#xff0c;之前在这个地方也卡了很久。如何生成在另外一个文章中已经有所记录。 使用 crd.yml 和 kubernetes CRD 自动生成 Java model 类 CustomObjectsApi 文档学习…