fastlane自动打包上传到AppStore

简介:Fastlane是一套使用Ruby写的自动化工具集,旨在简化Android和iOS的部署过程,自动化你的工作流。它可以简化一些乏味、单调、重复的工作,像截图、代码签名以及发布App。因为涉及到公司账号和子账号权限问题,因为有时候公司在给开发者设置子账号权限时,不想给管理员账号,只会给开发者账号,所以要在这种情况下还得自己完成上架,就需要使用这种脚本比较好,因为只需要输入一次公司agent账号和密码就可以实现。

所需材料:P12证书双击安装,苹果发布证书双击安装,并在工程中配置好这两个文件。

实现过程

一、安装xcode命令行工具

xcode-select --install,如果没有安装,会弹出对话框,点击安装。如果提示xcode-select: error: command line tools are already installed, use "Software Update" to install updates表示已经安装

二、安装Fastlane

sudo gem install fastlane -NV或是brew cask install fastlane我这里使用gem安装的

安装完了执行fastlane --version,确认下是否安装完成和当前使用的版本号。

三、初始化Fastlane

cd到你的项目目录执行

fastlane init

init

这里会弹出四个选项,问你想要用Fastlane做什么? 之前的老版本是不用选择的。选几都行,后续我们自行根据需求完善就可以,这里我选的是3。

如果你的工程是用cocoapods的那么可能会提示让你勾选工程的Scheme,步骤就是打开你的xcode,点击Manage Schemes,在一堆三方库中找到你的项目Scheme,在后面的多选框中进行勾选,然后rm -rf fastlane文件夹,重新fastlane init一下就不会报错了。

接着会提示你输入开发者账号和密码。

[20:48:55]: Please enter your Apple ID developer credentials

[20:48:55]: Apple ID Username:

登录成功后会提示你是否需要下载你的App的metadata。点y等待就可以。

如果报其他错的话,一般会带有github的相似的Issues的链接,里面一般都会有解决方案。

四、文件系统

初始化成功后会在当前工程目录生成一个fastlane文件夹,文件目录为下。

其中metadata和screenshots分别对应App元数据和商店应用截图。

Appfile主要存放App的apple_id team_id app_identifier等信息

Deliverfile中为发布的配置信息,一般情况用不到。

Fastfile是我们最应该关注的文件,也是我们的工作文件。

为了使其结构更整齐,这里我们将其内容修改为如下内容,这样生成的ipa包就会保存在build文件夹下,XXApp_iOS要更换为自己的项目名称

default_platform(:ios)

platform :ios do

  # desc "Push a new release build to the App Store"

  # lane :release do

  #   build_app(workspace: "XXApp_iOS.xcworkspace", scheme: "XXApp_iOS")

  #   upload_to_app_store

  # end

  desc "打包XXX

  lane :XXApp_iOS do |options|

    gym(

      clean:true, #打包前clean项目

      export_method: "app-store", #导出方式

      workspace:XXApp_iOS.xcworkspace",

      scheme:XXApp_iOS”, #scheme

      configuration: "Release",#环境

      output_directory:"./build",#ipa的存放目录

      output_name:XXX#get_build_number()#输出ipa的文件名为当前的build

    )

  end


end


执行

在工作目录的终端执行

fastlane

然后等待就好了,直到完成就可以看到多了一个ipa文件。这时候选中xcode,根据目录xcode->open developer tool->Application Loader,根据提示上传ipa即可。

其他的一些小提示

  1. 可以在before_all中做一些前置操作,比如进行build号的更新,我个人建议不要对Version进行自动修改,可以作为参数传递进来。

  2. 如果ipa包存放的文件夹为工作区,记得在.gitignore中进行忽略处理,我建议把fastlane文件也进行忽略,否则回退版本打包时缺失文件还需要手动打包。

  3. 如果你的Apple ID在登录时进行了验证码验证,那么需要设置一个专业密码供fastlane上传使用,否则是上传不上去的。

  4. 如果你们的应用截图和Metadata信息是运营人员负责编辑和维护的,那么在打包到AppStore时,记得要忽略截图和元数据,否则有可能因为不一致而导致覆盖。skip_metadata:true, #不上传元数据skip_screenshots:true,#不上传屏幕截图

关于fastlane的一些想法

其实对于很多小团队来说,fastlane就可以简化很多操作,提升一些效率,但是还不够极致,因为我们没有打通Git环节,测试环节,反馈环节等,fastlane只是处于开发中的一环。许多团队在进行Jenkins或是其他的CI的尝试来摸索适合自己的工作流。但是也不要盲目跟风,从需求出发切合实际就好,找到痛点才能找到止痛药!

参考链接:https://www.jianshu.com/p/5d836e89d9d1

猜你喜欢

转载自blog.csdn.net/lidongxuedecsdn/article/details/80439802