iOS使用fastlane实现本地一键打包和发布

2020-10-29  本文已影响0人  雪落天涯
image.png

fastlane简介

fastlane是一套主要使用Ruby语言开发的自动化工具集,可用于iOS和Android的自动化打包、发布等工作,做到一键集成发布,为广大开发者节约大量时间。fastlane详细介绍可参考下面资料。
Github:https://github.com/fastlane/fastlane
官网:https://fastlane.tools/
文档:https://docs.fastlane.tools/
截止目前fastlane Github上Star数已3W+。

安装fastlane

1、首先要安装正确的 Ruby 版本。需要2.0及以上版本,在终端窗口中用下列命令来确认:

ruby -v

2、然后检查 Xcode 命令行工具是否安装。在终端窗口中输入命令:

xcode-select --install

如果未安装,终端会开始安装,如果报错误:command line tools are already installed, use "Software Update" to install updates.代表已经安装。
3、以上配置好之后就可以安装fastlane了,可以通过RubyGems或Homebrew 安装

//RubyGems (macOS/Linux/Windows)
sudo gem install fastlane
//Homebrew (macOS)
brew install fastlane

安装过程中有可能被墙导致卡在bundle update,解决方法可自行谷歌.

初始化

打开终端,cd到你的工程目录,然后执行
fastlane init
执行后会在当前目录下创建fastlane文件夹,并有下面4个选项供选择,这里选择4,其他三项功能可查阅官方文档

What would you like to use fastlane for?
1. 📸  Automate screenshots
2. 👩‍✈️  Automate beta distribution to TestFlight
3. 🚀  Automate App Store distribution
4. 🛠  Manual setup - manually setup your project to automate your tasks

初始化成功后生成的fastlane文件结构如下

fastlane
├── Appfile
├── Deliverfile
├── Fastfile
├── metadata
│   ├── copyright.txt
│   ├── en-US
│   │   ├── description.txt
│   │   ├── keywords.txt
│   │   ├── marketing_url.txt
│   │   ├── name.txt
│   │   ├── privacy_url.txt
│   │   ├── release_notes.txt
│   │   └── support_url.txt
│   ├── primary_category.txt
│   ├── primary_first_sub_category.txt
│   ├── primary_second_sub_category.txt
│   ├── secondary_category.txt
│   ├── secondary_first_sub_category.txt
│   ├── secondary_second_sub_category.txt
│   └── zh-Hans
│       ├── description.txt
│       ├── keywords.txt
│       ├── marketing_url.txt
│       ├── name.txt
│       ├── privacy_url.txt
│       ├── release_notes.txt
│       └── support_url.txt
└── screenshots
    ├── README.txt
    ├── en-US
    │   ├── 一堆png图片

fastfile文件配置

为了方便可以在fastlane目录下创建一个.env配置文件,存储相关配置信息
touch .env
配置信息参考如下

#APP唯一标识符
APP_IDENTIFIER = "com.xxx.xxx.xxx"

#发布版本号
APP_VERSION_RELEASE = "1.0.0"

#苹果开发者账号
APPLE_ID = "xxxxxxxxxxxx"

#TeamID
TEAM_ID = "xxxxxxx"

#应用名称
SCHEME_NAME = "xxxxx"

# AppIcon
APPICON_PATH = './fastlane/metadata/app_icon.jpg'

# Firim Token
Firim_Api_Token = "xxxxxxxxxx"

#Firim short url
Firim_Short_url = "http://xxxxxxxxx"

配置 Appfile

# For more information about the Appfile, see:
#     https://docs.fastlane.tools/advanced/#appfile

app_identifier ENV['APP_IDENTIFIER'] # The bundle identifier of your app

apple_id ENV['APPLE_ID'] # Your Apple email address

team_id ENV['TEAM_ID'] # Developer Portal Team ID

配置 Fastfile

default_platform(:ios)

platform :ios do

  lane :dev do |option|

    increment_build_number

    scheme_name = ENV['SCHEME_NAME']
    app_ipa_name = "#{scheme_name}"
    print("app_ipa_name: #{app_ipa_name}")
    puts "请输入版本描述:"
    desc = STDIN.gets

    #打包
    gym(
        scheme: "#{scheme_name}",
        export_method: "development",#打包所选的种类(就是App Store,生产测试,企业,开发测试那四种), app-store,ad-hoc,enterprise,development
        output_directory: "./build",
        output_name: "#{app_ipa_name}.ipa"
        )

  #上传到firim,上传Fir.im需要提前安装Fir.im插件 fastlane add_plugin fir_cli
    firim(
          firim_api_token:ENV['Firim_Api_Token'],
          app_changelog:"#{desc}",
          icon:ENV['APPICON_PATH']
          ) 

  #上传成功后 弹窗通知提醒
    notification(
                subtitle: "Finished upload to fir.im",         
                message: "all work done",
                open: ENV['Firim_Short_url']
                )

    clean_build_artifacts
  end
end

metadata文件夹

如果只是简单的打包提交到蒲公英,Firim分发平台,metadata目录下的所有文件都可以删除,只保留app_icon.jpg,(图片名称不要修改,图片为1024x1024的App icon,否则打包后上传Fir.im 包没有App icon)
metadata文件夹结构如下

├── metadata
│   └── app_icon.jpg

自动打包 发布

最后在工程目录下 输入命令 fastlane dev(dev 为Fastfile中lane 对应的名称)
几分钟后打包成功并自动上传到Fir.im,Mac 会弹出通知提醒
(上传Fir.im需要安装Fir.im插件 fastlane add_plugin firim)

上一篇下一篇

猜你喜欢

热点阅读