美文网首页ios专题iOS开发
fastlane自动化构建工具

fastlane自动化构建工具

作者: HeavenWong | 来源:发表于2018-04-08 15:14 被阅读25次

    一句代码fastlane [lane_name],实现一键自动完成构建打包。fastlane还有很多其他功能,学会直线骑车再学拐弯等骑车技巧就很容易了。下面讲fastlane简单的自动化构建,免除我们日常工作中的编译、打包、部署等重复流程。

    一、安装fastlane

    • 我安装fastlane遇到个问题,长点知识,凡是遇到这种报错基本都是本地ruby版本太低了。查看了ruby的一系列版本之后选了最新的版本2.4.1,就是这个2.4.1这个版本我装好了好久都装不上,花了我好多时间,后来退了一个版本2.2.2,问题解决。(一万只马在奔腾......)
    // 报错的大致信息:
    YAML safe loading is not available. Please upgrade psych to a version that supports safe loading (>= 2.0).
    ERROR:  SSL verification error at depth 1: unable to get local issuer certificate (20)
    ...
    ERROR:  Error installing fastlane:
        ERROR: Failed to build gem native extension.
    
        Building has failed. See above output for more information on the failure.
    extconf failed, exit code 1
    
    
    • 解决Answer:打开终端,键入
    // 安装新版本,这个版本没问题,rvm>2.0版本就可以了
    rvm install 2.2.2
    

    回到正题:安装fastlane


    fastlane官方地址
    [fastlaneGithub地址]
    参考文章1
    参考文章2
    参考LuisX
    参考文章4

    // 终端键入,等待安装完成
    rvm install fastlane
    
    
    • 测试是否安装成功,有版本号就成功,我的版本是2.89.0
    // 终端键入
    fastlane -v
    

    二、fastlane简单使用和初始化

    • 进入项目根目录
    cd 你项目的根目录
    
    • 初始化fastlane,fastlane init,我选择第3种

       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初始化.png
    • 失败原因是:fastlane默认的是App Store自动化设置,但是我是用企业账号没有权限来设置App Store自动化打包,所以失败,我改选第4项的手动设置。
    • 初始化成功后,进入你项目根目录的fastlane文件有两个文件:AppfileFastfile
    Appfile
    • Appfile文件用来存放你的APP信息,包括app_identifier,apple_id和team_id。
    Fastfile
    • Fastfile文件是你自动化构建配置的信息
    实现企业版自动化构建配置,解决上面权限问题
    • 在Fastfile文件写入
    desc "企业版"
      lane :inhouse do
      gym(scheme: "BeeEnrichmentAppiOS",
      clean:true,
      configuration: "Release",
      export_method: "enterprise",
      output_name:"BeeEnrichmentAppiOS",
      output_directory:"build") # Build your app - more options available
      deliver(force: false)
      # frameit
      end
    
    • 打开终端,cd到你的项目根目录,键入fastlane ios inhouse do

    • 更多fastlane的其他指令请看fastlane Doc指南

    fastlane actions:      列出所有可用fastlane活动
    fastlane action [action_name]:   显示一个更详细的活动描述
    fastlane lanes:      列出所有可用lanes (有描述)
    fastlane list:       列出所有可用lanes (没有描述)
    fastlane new_action:     在fastlane创建一个活动(集成)
    
    • fastlane工具:
    • deliver: 上传截图, 元数据, app应用程序到App Store
    • supply: 上传Android app应用程序和元数据到Google Play
    • snapshot: 自动捕获iOS app应用程序本地截图
    • screengrab: 自动捕获Android app应用程序本地截图
    • frameit: 快速截屏并将截屏放入设备中
    • pem: 自动生成和更新推送通知配置文件
    • sigh: 开发证书和描述文件下载
    • produce: 使用命令行在iTunes Connect上创建新的app和开发入口
    • cert: 自动创建和配置iOS代码签名证书
    • spaceship: Ruby 库访问 Apple开发者中心和 iTunes Connect
    • pilot: 最好的方式管理你的TestFlight 测试人员和从终端构建
    • boarding: 最简单的方式邀请你的TestFlight beta测试人员
    • gym: iOS app打包签名自动化工具
    • match: 使用Git同步你的团队证书和配置文件
    • scan: 最简单方式测试你的 iOS 和 Mac apps

    三、gym配置自动化构建

    • gym也是fastlane的工具之一,iOS app打包签名自动化工具


      gym图片
    • gym安装:
    // 终端
    sudo gem install gym
    
    • gym的使用

    一下操作都是cd到项目的根目录下

    // 终端
    gym --workspace "gymTest.xcworkspace" --scheme "gymTest" --clean
    // 或者用这条命令,fastlane 指令
    fastlane gym
    
    执行
    • 在Fastfile文件写完lane配置后,终端键入fastlane [lane_name],自动打包完成。
    • 以后打包的时候,只要cd到项目根目录,再键入fastlane [lane_name]就实现自动构建。[lane_name]是你写入的lane名字。
    • 你可以在Fastfile写入这写功能:
    platform :ios do
    
      before_all do
      # ENV["SLACK_URL"] = "https://hooks.slack.com/services/..."
      cocoapods
      end
    
      #执行lane成功后的回调
      after_all do |lane|
       # slack(
       #  message: "Successfully deployed new App Update."
       # )
         end
      # 如果流程发生异常会走这里并终止
      error do |lane, exception|
       # slack(
       #  message: exception.message,
       #  success: false
       # )
         end
      end
    
      desc "Description of what the lane does"
      lane :custom_lane do
        # add actions here: https://docs.fastlane.tools/actions
      end
    
      desc "提交一个新的Beta版本到 Apple TestFlight"
      desc "This will also make sure the profile is up to date"
      lane :beta do
      # match(type: "appstore") # more information: https://codesigning.guide
      gym(scheme: "你的项目名字") # Build your app - more options available
      pilot
      # sh "your_script.sh"
      end
    
      desc "部署一个新版本到App Store"
      lane :release do
      # match(type: "appstore")
      # snapshot
      gym(scheme: "你的项目名字”,
          clean:true,
          configuration: "Release”,
          export_method: "appstore"
          ) # Build your app - more options available
      deliver(force: false)
      # frameit
      end
      
      desc "企业版"
      lane :inhouse do
      gym(scheme: "你的项目名字",
          clean:true,
          configuration: "Release",
          export_method: "enterprise",
          output_name:"你的项目名字",#打包.ipa的文件名
          output_directory:"build") # Build your app - more options available
      deliver(force: false)
      # frameit
      end
    
    end
    
    
    自动打包成功.png

    相关文章

      网友评论

        本文标题:fastlane自动化构建工具

        本文链接:https://www.haomeiwen.com/subject/jeakhftx.html