神剑若水哥: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 比较推荐,双击打包即可

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

你可能感兴趣的:(神剑若水哥:iOS fastlane 打包工具的使用)