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

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

二、Fastlane自动打包并发布://www.greatytc.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环境搭建://www.greatytc.com/p/531c959b8cf8

四、先保证能手动打包,然后再保证能用Fastlane打包,最后再Jenkins驱动Fastlane自动打包并发布(本质其实就是把我们单纯使用Fastlane时需要往命令行敲命令的操作,搞成了Jenkins的可视化操作加脚本)://www.greatytc.com/p/c61eb3890704(自动构建,无参数配置、脚本精简)、//www.greatytc.com/p/531c959b8cf8(有配置哪几项参数,但是脚本不太精简)、//www.greatytc.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

五、安卓端基本跟上面一样的操作甚至更少的操作://www.greatytc.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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,302评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,563评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,433评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,628评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,467评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,354评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,777评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,419评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,725评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,768评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,543评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,387评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,794评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,032评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,305评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,741评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,946评论 2 336

推荐阅读更多精彩内容