美文网首页
【iOS开发工程化——开发完毕】:自动打包

【iOS开发工程化——开发完毕】:自动打包

作者: 意一ineyee | 来源:发表于2023-06-15 14:08 被阅读0次

一、Fastlane环境搭建:https://www.jianshu.com/p/703534031e42

二、Fastlane自动打包并发布:https://www.jianshu.com/p/703534031e42

1、cd到项目,初始化fastlane

fastlane init
image.png

2、编辑AppFile信息

app_identifier "ineyee.TestApp"

apple_id "2487407179@qq.com"

3、编辑fastlane自动打包和发布脚本,Fastfile文件(没什么特殊需要的话,下面只需要改一下project_name)

project_name = "CICDTestApp"

output_platform = "蒲公英"

default_platform(:ios)

platform :ios do

  # 描述一下Fastlane正在做什么

  desc "🚀🚀🚀🚀🚀🚀Fastlane自动打包并发布#{project_name}到#{output_platform}🚀🚀🚀🚀🚀🚀"

  # 将来执行fastlane beta命令来开始自动打包并发布,beta可以修改

  lane :beta do

    # add actions here: https://docs.fastlane.tools/actions

    gym(

    # 每次打包之前clean一下以前的编译信息

    clean: true,

    # 工程的名字,不是App显示的名字

    scheme: "#{project_name}",

    # 打包模式:Release、Debug、Profile

    configuration: "Release",

    # 什么包,包含 app-store, validation, ad-hoc, package, enterprise, development, developer-id and mac-application

    export_method: "ad-hoc",

    # 输出ipa的名称

    output_name: "#{project_name}.ipa",

    # 输出ipa的路径

    output_directory: "/Users/yiyi/Desktop/#{project_name}_IPA_#{Time.new.strftime("%Y-%m-%-d-%H-%M")}",

    # 是否包含bitcode

    include_bitcode: false,

    # 是否包含symbols

    include_symbols: true,

    # 这个设置是为了设置Xcode自动配置证书和配置文件,当然也可以手动配置,可以参考文档

    export_xcargs: "-allowProvisioningUpdates"

    )

    # mac上的通知弹窗,通知打包完毕

    notification(app_icon: "./fastlane/icon.png", title: "manager", subtitle: "Fastlane自动打包成功,已导出ipa", message: "准备发布到#{output_platform}……")

    # 配置要上传到的蒲公英账号

    pgyer(api_key:"d36324232ca7de702af30d5d1e754787", update_description:"1、修复已知Bug;\n2、提升部分性能。")

  end

end

4、加入蒲公英插件,Gemfile文件里会加入插件

fastlane add_plugin pgyer

5、执行以下命令开始fastlane自动打包并发布(就算你蒲公英控制台没创建过这个项目,这个也会帮你自动创建)

fastlane beta

三、Jenkins环境搭建:https://www.jianshu.com/p/531c959b8cf8

四、先保证能手动打包,然后再保证能用Fastlane打包,最后再Jenkins驱动Fastlane自动打包并发布(本质其实就是把我们单纯使用Fastlane时需要往命令行敲命令的操作,搞成了Jenkins的可视化操作加脚本):https://www.jianshu.com/p/c61eb3890704(自动构建,无参数配置、脚本精简)、https://www.jianshu.com/p/531c959b8cf8(有配置哪几项参数,但是脚本不太精简)、https://www.jianshu.com/p/407b91d702b2(参考了一下怎么把Jenkins的配置参数应用在shell脚本里,然后shell脚本又怎么决定Fastlane脚本执行不同的代码,Fastlane脚本如何拆分成不同的模式)

1、新建一个任务

image.png image.png

2、General -> 参数化构建过程

image.png image.png image.png image.png 2、源码管理 image.png

3、Build Steps

image.png image.png

shell脚本

#!/bin/bash

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8

echo -e "=========安装更新pod==========="

pod update

echo -e "=======打包上传======="

## 这里的Configuration和ExportMethod是上面Jenkins配置的选项参数

## 这里的脚本给fastlane脚本传参数就是beta后面连续的跟key:value即可

fastlane beta configuration:${Configuration} export_method:${ExportMethod}

当然上面的shell脚本是针对于iOS项目的,如果你想打Flutter项目里的iOS包,那我们得在前面进入到iOS目录下,也就是加一行cd到ios目录下(注意路径要准确,否则会报错,比如不能直接cd ios)

#!/bin/bash

cd /Users/yiyi/Desktop/AuditoryWorks/FlutterProject/nearhub-flutter/ios

export LANG=en_US.UTF-8

export LANGUAGE=en_US.UTF-8

export LC_ALL=en_US.UTF-8

echo -e "=========安装更新pod==========="

pod update

echo -e "=======打包上传======="

## 这里的Configuration和ExportMethod是上面Jenkins配置的选项参数

## 这里的脚本给fastlane脚本传参数就是beta后面连续的跟key:value即可

fastlane beta configuration:${Configuration} export_method:${ExportMethod}

为了根据配置打出不同模式的包,我们需要修改下Fastlane的脚本(没什么特殊需要的话,下面只需要改一下project_name)

project_name = "Runner"

configuration = ""

export_method = “”

default_platform(:ios)

platform :ios do

  # 描述一下Fastlane正在做什么

  desc "🚀🚀🚀🚀🚀🚀Fastlane自动打包并发布🚀🚀🚀🚀🚀🚀"

  # 将来执行fastlane beta命令来开始自动打包并发布,beta可以修改

  # do后面固定跟一个|options|代表外界命令传进来的参数

  lane :beta do |options|

    # add actions here: https://docs.fastlane.tools/actions

    configuration = options[:configuration]

    export_method = options[:export_method]

    gym(

    # 每次打包之前clean一下以前的编译信息

    clean: true,

    # 工程的名字,不是App显示的名字

    scheme: "#{project_name}",

    # 打包模式:Release、Debug、Profile

    configuration: "#{configuration}",

    # 什么包,包含 app-store, validation, ad-hoc, package, enterprise, development, developer-id and mac-application

    export_method: "#{export_method}",

    # 输出ipa的名称

    output_name: "#{project_name}.ipa",

    # 输出ipa的路径

    output_directory: "/Users/yiyi/Desktop/#{project_name}_IPA_#{Time.new.strftime("%Y-%m-%-d-%H-%M")}",

    # 是否包含bitcode

    include_bitcode: false,

    # 是否包含symbols

    include_symbols: true,

    # 这个设置是为了设置Xcode自动配置证书和配置文件,当然也可以手动配置,可以参考文档

    export_xcargs: "-allowProvisioningUpdates"

    )

    # ad-hoc包直接上传到蒲公英;app-store包暂时自己上传导出的ipa

    if (options[:export_method] == "ad-hoc")

      # mac上的通知弹窗,通知打包完毕

      notification(app_icon: "./fastlane/icon.png", title: "manager", subtitle: "Fastlane自动打包成功", message: "准备发布到蒲公英……")

      # 配置要上传到的蒲公英账号

      pgyer(api_key:"d36324232ca7de702af30d5d1e754787", update_description:"1、修复已知Bug;\n2、提升部分性能。")

    else

      # mac上的通知弹窗,通知打包完毕

      notification(app_icon: "./fastlane/icon.png", title: "manager", subtitle: "Fastlane自动打包成功,已导出ipa", message: "")

    end

  end

end

4、ok,接下来就可以发起自动打包了

(1)选中你想要打包的这个项目

image.png

(2)然后配置一下你要打什么分支、什么模式的包,开始构建即可

image.png

(3)开始构建即可

image.png image.png image.png

5、然后去蒲公英扫码安装就好了

image.png

6、然后关于Jenkins服务,当你启动后不关掉或者不关电脑的话,它就是一直启动的,Jenkins的网页就一直能访问,如果你想关掉就关掉,用的时候再打开,后面这个-lts看你安装jenkins的时候是brew install jenkins-lts还是brew install jenkins,后者的话就不需要加这个-lts

启动 jenkins: brew services start jenkins-lts

停止 jenkins:brew services stop jenkins-lts

重启 Jenkins:brew services restart jenkins-lts

五、安卓端基本跟上面一样的操作甚至更少的操作:https://www.jianshu.com/p/6776d142aa9a,无非就是fastlane脚本文件里稍有区别而已

project_name = "Runner"

configuration = ""

default_platform(:android)

platform :android do

  lane:beta do

    puts “Debug版本开始打包"

    gradle(task:'clean')

    gradle(

        task: 'assemble',

        build_type: 'Debug',

      )

    puts "Debug版本打包成功”

    puts "开始上传到蒲公英"

    pgyer(api_key:"d36324232ca7de702af30d5d1e754787", update_description:"1、修复已知Bug;\n2、提升部分性能。")

    puts "上传到蒲公英成功”

    # 在上传完apk后,打开apk的存放文件夹,起到提示上传完成的作用

    system "open /Users/yiyi/Desktop/apk/debug”

  end

  lane:beta do

    puts “Debug版本开始打包"

    gradle(task:'clean')

    gradle(

        task: 'assemble',

        build_type: ‘Release',

      )

    puts "Debug版本打包成功”

    puts "开始上传到蒲公英"

    pgyer(api_key:"d36324232ca7de702af30d5d1e754787", update_description:"1、修复已知Bug;\n2、提升部分性能。")

    puts "上传到蒲公英成功”

    # 在上传完apk后,打开apk的存放文件夹,起到提示上传完成的作用

    system "open /Users/yiyi/Desktop/apk/debug”

  end

end

六、一些错误及解决办法:

相关文章

网友评论

      本文标题:【iOS开发工程化——开发完毕】:自动打包

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