神剑若水哥:iOS fastlane 打包工具的使用

1,安装xcode命令行工具

命令:

xcode-select --install

结果如图,提示为 xcode-select: error: command line tools are already installed, use "Software Update" to install updates,表示我已经安装过了。如果没安装会提示安装。

image-20190830110158570

2.安装Fastlane

命令如下,选一种即可;

gem的安装方式:

sudo gem install fastlane -NV

brew的安装方式:

brew cask install fastlane

我采用brew 的安装方式,brew cask install fastlane 如果如下图:让我们重起终端,就可以用fastlane

2

3.初始化fastlane

3.1 打开你的工程目录 (注意:是工程目录,shopeone-app-ios是你的工程名字)

cd /Users/xiehewanbang/Desktop/other/shopeone-app-ios

cd 后面是你自己的工程路径:不要弄错啦,不要复制命令。

3.2 fastlane初始化命令

命令:

fastlane init

结果:会让我们选择 ,我这里选择4,手动管理证书的打包方式。其他方式后续再讲。
4
结果:bundle update卡住啦 !没遇到就跳过吧;
image-20190830114428779

解决:gem sources 看一下gem资源url ,把url换成国外地址

注意:有的人说是用中国地址不会卡,我用的外国地址不会卡。什么原因你懂的,如果不行可以再换回来。
1.增加外国地址
gem sources --add https://rubygems.org
2.删除gem 中的国内地址
gem sources --remove https://gems.ruby-china.com/
3.再次执行 fastlane init
 fastlane init
结果没问题如图:
image-20190830115018787

4.fastlane命令文件的配置。

我的是上传到PuGongYing的测试包。所以就以这个为例子吧。
其中metadata和screenshots分别对应App元数据和商店应用截图。
Appfile主要存放App的apple_id team_id app_identifier等信息
Deliverfile中为发布的配置信息,一般情况用不到。
Fastfile是我们最应该关注的文件,也是我们的工作文件。

4.1我们打开Fastfile 的文件把文件编辑成如下代码,如图:

default_platform(:iOS)


platform :iOS do 
    desc "XX测试包"
    lane :xiaoguoDebug do |options|
            appName = "xiaoguo"
            dateString  =`date '+%Y%m%d_%H%M%S'`
            schemeName  = "#{appName}"
            workspaceName = "#{appName}.xcworkspace"
            profileName = "xiaoguo_profile_dev"
            gym(
                clean:true, #打包前clean项目
                export_method: "development", #导出方式
                scheme:"#{schemeName}", #scheme
                workspace: "#{workspaceName}", # 自己项目名称xcworkspace(使用cocoapods才会生成)
                configuration: "Debug",#环境
                output_directory:"/Users/xiehewanbang/Desktop/打测试包/DEBUG_Package",#ipa的存放目录
                output_name:"#{schemeName}_#{dateString}_DEBUG.ipa",
                export_xcargs:"-allowProvisioningUpdates",#访问钥匙串
                export_options: {
                    provisioningProfiles: {
                        "bundleid" => "#{profileName}" # bundleid,打包用的证书名字
                    }
                }
            )
            #蒲公英的配置 替换为自己的api_key和user_key
            pgyer(
                api_key:"",
                user_key:"",
                #password: "123456", # 密码
                #install_type: "2"
                update_description: options[:desc]#"description" # 本次测试更新的文字说明(参数设置)
            )
    end
end

重要的事情说三遍:

记得保存!
记得保存!
记得保存!

4.2 安装蒲公英插件,命令如下

fastlane add_plugin pgyer
a 中间提示,输入y即可
image-20190830142642457
b 中间提示,输入输入开机密码:

输入自己的开机密码

5 打包命令执行方式

5.1打包方式一:命令打包

直接命令如下:
fastlane xiaoguoDebug desc:自动打包

说明:

1.xiaoguoDebug 为lane 的名字
2.desc:自动打包 为打包的描述
3.注意:xiaoguoDebug 为你的lane 的名字,就是4.1中这个句话中 lane :xiaoguoDebug do |options|
中的xiaoguoDebug 。这两个xiaoguoDebug 必须要一致。
image

这样的话每次打包都需要执行 fastlane xiaoguoDebug desc:自动打包,有的同学感觉很烦,有的时候很容易出错。如果,觉得不烦躁的话,我们的文章就到这里吧。如何还想改进,可以看5.2

5.2 打包方式二:shell执行脚本打包--双击脚本即可

5.2.1 shell脚本配置 (1,2 步)

1 .打包的命令 sell脚本建立:

随便找一个路径作为脚本存放的路径(我建立了一个文件夹fastlane打包)执行命令:
touch xiaoguo.sh
这样就建立一个名字为shell 的脚本,如图:
image-20190902095244835

2.打开xiao guo.sh (随便什么工具都行,Xcode,subline Text),在脚本写入

#!/bin/sh



# 获取当前脚本所在目录
script_dir="$( cd "$( dirname "$0"  )" && pwd )"

#打包工具中lane 的名字
lane_name="xiaoguoDebug"

#工程所在的路径
project_dir="/Users/xiehewanbang/Desktop/other/shopeone-app-ios"

#打包工具所在的路径
fastFile_dir=$project_dir/fastlane

#更新提示文件路径
updateFile_dir=$script_dir/desc

#更新提示文件名字
updateFile_name="update_desc"

#更新提示文件:当前打包工程 对应的 更新内容 
project_DesKey="xiaoguo"


# 判断要压缩结果路径是否存在
if [ -d "$project_dir" ] ; then
    echo "\033[32;1m----😄😄${project_dir}路径存在可以打包  \033[0m"
else
    echo "\033[31;1m------打包的路径: ${project_dir} 不存在😂😂😂     \033[0m"
    exit 0
fi

JQ_EXEC="which jq"


#打开升级提示所在的路径
cd $updateFile_dir
# 判断要压缩结果路径是否存在

FILE_PATH="${updateFile_name}.json"
if [ -f "$FILE_PATH" ] ; then
    echo "\033[32;1m----${FILE_PATH} 更新提示文件存在 嘎哈哈   \033[0m"
else
    echo "\033[31;1m------${FILE_PATH} 更新提示文件 不存在😂😂😂     \033[0m"
    exit 0
fi

update_desc_String=$(cat $FILE_PATH|jq .${project_DesKey}.update_desc)

echo "更新提示内容--------${update_desc_String}"

#打开打包脚本所在的路径
cd $fastFile_dir

#脚本命令
fastlane ${lane_name} desc:${update_desc_String}



exit 0



记得保存!
记得保存!
记得保存!

对字段解释:

解释1.lane_name="xiaoguoDebug"

lane_name 是自己在工程中建立的Fastfile 中的lane的名字;xiaoguoDebug 如5.1上面已经提到过。
lane_name根据自己的定义的名字修改

解释2.project_dir="/Users/xiehewanbang/Desktop/other/shopeone-app-ios"

project_dir 是自己工程的路径这个要根据自己工程不同而确定,
project_dir一般要修改

解释3.fastFile_dir=$project_dir/fastlane

fastFile_dir 是当时安装fastline的路径,这个一般是固定的,就在工程路径中fastlane里。
fastFile_dir一般不修改。

解释4.updateFile_dir 和updateFile_name和project_DesKey

这四个是和升级提示,这里先根据注解简单理解一下,有关的我们下面讲细讲。
#更新提示文件路径
updateFile_dir=$script_dir/desc

#更新提示文件名字
updateFile_name="update_desc"

#更新提示文件:当前打包工程 对应的 更新内容 
project_DesKey="xiaoguo"

5.2.1 ''升级提示''文件的配置(1,2,3 , 4步)

1.建立升级提示的文件(这是一个json 格式的文件):

在xiaoguo.sh 同级先建立一个文件夹desc , 用命令工具打开desc 文件夹:

cd /Users/xiehewanbang/Desktop/fastlane打包/desc

再执行

touch update_desc.json

这样就创建里一个update_desc.json的文件

2.打开(用Xcode 或者subline Text)update_desc.json 编辑文件内容如下:

{
    "xiaoguo": {
        "update_desc":"测试上传"
    }
}
文件路径如下:
image-20190902103539379
现在我们来解释一下shell脚本中的这3个字段
#更新提示文件路径
updateFile_dir=$script_dir/desc

#更新提示文件名字
updateFile_name="update_desc"

#更新提示文件:当前打包工程 对应的 更新内容 
project_DesKey="xiaoguo"
解释1: updateFile_dir=$script_dir/desc

updateFile_dir 是升级提示文件update_desc.json 所在的路径。只要按照我说的文件夹层次建立的desc 文件夹,

script_dir/desc 这个不用改。$script_dir 表示xiaoguo.sh 的所在路径,后面拼接一个desc。

解释2: updateFile_name="update_desc"

updateFile_name 升级提示文件的名字,就是update_desc,如果你建立的文件不是这个。就要用改用自己定义的。

解释3:project_DesKey="xiaoguo"

project_DesKey 是从当前 “升级提示” 的字典(其他语言叫map) 取的当前这个工程的App 对应的更新提示。

例如 xiaoguo 这个工程对应的升级提示为“测试上传”

所以,每次打包上传时,我们都要去打开文件,改一下 “测试上传”

3.安装jq 工具(shell 脚本需要解析升级提示文件中的json 数据)

打开这个链接 https://stedolan.github.io/jq/download/ 可以参看一下;

执行命令:(前提要安装brew,是一个管理工具,这个网上很多,不细说了)

brew install jq
image-20190902104947589
我已经安装过了,所以提示重复安装。

4.双击执行脚本(打包时,只要双击脚本,即可打包)

1.问题描述:双击时,发现脚本没有执行,只是被某个默认文件编辑工具打开了。

解决办法:我们需要把xiaoguo.sh 的后缀改为 xiaoguo.command

再次双击,出现新的问题,如下:
image-20190902105927816
2.解决上面的权限问题:

执行命令如下:

chmod +x /Users/xiehewanbang/Desktop/fastlane打包/xiaoguo.command

再次双击,脚本执行了,😄终于成功啦!

image-20190902110208231

总结:

5.1 打包方式,每次都是需要去执行: fastlane xiaoguoDebug desc:自动打包

5.2 比较推荐,双击打包即可

以上是自己的一点拙见,欢迎大家指正,有需要的可以留言

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

推荐阅读更多精彩内容