【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、递增版本号配置
    • 五、Fastlane执行
  • 三、总结
  • 四、常见问题归纳

前言

  • 废话不多说,能知道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
    在这里插入图片描述
  • 修改info.plist File路径
    在这里插入图片描述

五、Fastlane执行

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

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

三、总结

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

四、常见问题归纳

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

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

相关文章

网络安全工程师自主学习计划表(具体到阶段目标,保姆级安排,就怕你学不会!)

前言 接下来我将给大家分享一份网络安全工程师自学计划指南&#xff0c;全文将从学习路线、学习规划、学习方法三个方向来讲述零基础小白如何通过自学进阶网络安全工程师&#xff0c;全文篇幅有点长&#xff0c;同学们可以先点个收藏&#xff0c;以免日后错过了。 目录 前言…

C++对象模型(4)-- 数据语义学:数据成员的内存布局

1、数据成员的声明顺序和内存布局 变量的布局顺序与它的声明顺序是一致的。 我们先来看一段代码&#xff1a; class Base { public:// 变量地址void print() {cout << " this:" << this << endl;cout << " &i1:" << …

【高级rabbitmq】

文章目录 1. 消息丢失问题1.1 发送者消息丢失1.2 MQ消息丢失1.3 消费者消息丢失1.3.1 消费失败重试机制 总结 2. 死信交换机2.1 TTL 3. 惰性队列3.1 总结&#xff1a; 4. MQ集群 消息队列在使用过程中&#xff0c;面临着很多实际问题需要思考&#xff1a; 1. 消息丢失问题 1.1…

WIN10 NPM的安装

引言&#xff1a; 什么是node.js? javaScript是一门脚本语言&#xff0c;通常被用来编写、执行本地源代码。脚本语言需要一个解析器才能运行&#xff0c;HTML文件中的JavaScript代码由浏览器解析执行。而自行执行JavaScript代码则需要Node.js解析器才能运行。 每个解析器都…

vue实现echarts中 9种 折线图图例

let datas [{ DivideScore: 7, UserScore: 7.2, Name: 目标制定 },{ DivideScore: 7, UserScore: 7, Name: 具体性 },{ DivideScore: 7, UserScore: 7.5, Name: 可衡量性 },{ DivideScore: 7, UserScore: 7, Name: 可实现性 },{ DivideScore: 7, UserScore: 7, Name: 时间限定…

从创作到表演的全方位改变,数字时代中的和声之音

随着ChatGPT的现象级走红&#xff0c;AIGC在全球范围内掀起热潮。 所谓AIGC&#xff08;Al-Generated Content&#xff09;&#xff0c;是指利用人工智能来根据用户需求&#xff0c;借助已有的材料库生成对应的内容。事实上&#xff0c;除了强大的文本能力之外&#xff0c;图像…

超详细!Android Termux上如何安装MySQL,内网穿透实现公网远程访问

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备&#xff0c;尽管最初并非设计为服务器&#xff0c;但是随着技术的进步我们可以将Android配置为生产力工具&#xff0c;变成一个随身…

k8s-8 ingress-nginx

nodeport 默认端口 nodeport默认端口是30000-32767&#xff0c;超出会报错 添加如下参数&#xff0c;端口范围可以自定义 externalname ingress-nginx 通过一个外部的vip 地址 访问到集群内的多个service 一种全局的、为了代理不同后端 Service 而设置的负载均衡服务&…

Typescript 笔记:初识Typescript

1 TypeScript介绍 TypeScript 是一种给 JavaScript 添加特性的语言扩展TypeScript 是 JavaScript 的超集&#xff0c;扩展了 JavaScript 的语法&#xff0c;因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改&#xff0c;TypeScript 通过类型注解提供编译时的静…

公安机关警务vr综合实战模拟训练提高团队合作能力

公安出警VR虚拟仿真培训软件是VR公司利用VR虚拟现实和web3d开发技术&#xff0c;对警务执法过程中可能发生的各种场景进行还原、模拟、演练&#xff0c;结合数据分析&#xff0c;实施量化考核&#xff0c;提高学员的心理承压、应急处突、遇袭反应和临危处置综合能力。 公安出警…

一个rar压缩包如何分成三个?

一个rar压缩包体积太大了&#xff0c;想要将压缩包分为三个&#xff0c;该如何做到&#xff1f;其实很简单&#xff0c;方法就在我们经常使用的WinRAR当中。 我们先将压缩包内的文件解压出来&#xff0c;然后查看一下&#xff0c;然后打开WinRAR软件&#xff0c;找到文件&…

基于Python+Selenium的web自动化测试框架详解

简介 随着Web应用程序的广泛应用和不断发展&#xff0c;Web自动化测试已经成为软件质量保证中的一个重要环节。而PythonSelenium作为一组强大的工具和框架&#xff0c;已经成为Web自动化测试领域中的热门技术之一。PythonSelenium可以帮助我们快速、准确地模拟用户行为和操作&…