Fastlane是一套使用Ruby写的自动化工具集,旨在简化Android和iOS的部署过程,自动化你的工作流。它可以简化一些乏味、单调、重复的工作,像截图、代码签名以及发布App
一行命令实现打包工作,不需要时时等待操作下一步,节省打包的时间去做其他的事。
xcode-select --install,如果没有安装,会弹出对话框,点击安装。如果提示xcode-select: error: command line tools are already installed, use "Software Update" to install updates表示已经安装xcode-select --install
sudo gem install fastlane -NV使用gem安装的或brew cask install fastlane安装完了终端执行fastlane --version,确认下是否安装完成和当前使用的版本号。sudo gem install fastlane -NV
fastlane --version
fastlane init
cd [工程根目录]
fastlane init

3执行(最新的Fastlane需要选2)
y执行等待就可以,最终终端执行完毕之后返回bundle update,则表示成功下载
1和 Versioning System设置Apple Generic

cd [工程根目录]
bundle update

Bundle updated!则表示bundle更新完成cd [工程根目录]
fastlane add_plugin pgyer
y执行等待,当返回Successfully installed plugins,则表示安装插件成功
# This file contains the fastlane.tools configuration
# You can find the documentation at https://docs.fastlane.tools
#
# For a list of all available actions, check out
#
# https://docs.fastlane.tools/actions
#
# For a list of all available plugins, check out
#
# https://docs.fastlane.tools/plugins/available-plugins
#
# Uncomment the line if you want fastlane to automatically update itself
# update_fastlane
default_platform(:ios)
platform :ios do
desc "用于发布到蒲公英"
lane :adHoc do
#—————————————————————根据实际项目对应修改—————————————————————————
#工程名称
scheme = "xxxx"
bundleID = "xxxxx"
#app名称
appName = "xxxxx"
#蒲公英获取key
api_key = "xxxx"
#user_key = "xxxx"(最新版本不需要user_key)
#蒲公英下载地址
downloadURL = "xxxx"
#—————————————————————————————————————————————————————————————
puts "*************| 开始上传蒲公英... |*************"
#输入蒲公英上传ipa包后输入的版本描述信息
puts "请输入版本描述:"
descStr = STDIN.gets
#指定打包环境 Debug、Test、Release、PreRelease
puts "请指定需要打包的方式:1:Debug 2:Test 3:PreRelease 4:Release"
configurationType = STDIN.gets
if configurationType == "4\n"
configurationName = "Release"
elsif configurationType == "3\n"
configurationName = "PreRelease"
elsif configurationType == "2\n"
configurationName = "Test"
elsif configurationType == "1\n"
configurationName = "Debug"
end
#构建打包 也叫gym
build_app(
clean: true, #打包前clean
scheme: scheme,
workspace: "#{scheme}.xcworkspace",
export_method: "ad-hoc",
include_bitcode: false,
configuration: configurationName,#打包方式
output_directory: "./ipa", #导出路径 文件夹没有的话会自动新建一个
silent: true, #在构建时隐藏终端不必要输出的信息
output_name: "#{scheme}_#{Time.now.strftime('%Y%m%d%H%M')}.ipa"
)
pgyer(api_key: api_key, update_description: "更新内容:#{descStr}")
notification(title: "提示", message: "#{appName} adHoc 打包成功: #{downloadURL}", open: downloadURL)
puts "*************| 上传蒲公英成功? |*************"
end
end
cd [工程根目录]
fastlane adHoc
astlane adHoc中的adHoc,是对应的Fastfile文件中的lane命名
注意 可以通知设置Fastfile文件中的configuration 来设置打包环境,而不需要手动选择,我已经在Fastfile配置中加了选择功能,根据对应的环境选择即可fastlane.tools finished successfully ?
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
有没有办法配置(例如,可以使用Fastfile)或以更简洁的方式执行FaSTLane?它目前打印出很多信息,这些信息通常会使开发人员对警告和错误视而不见。主要问题是需要花费一些时间在大量无用消息中滚动和搜索黄色/红色文本,直到您了解发生了什么。默认设置会打印所有内容,令人惊讶的是甚至还有--verbosemode对于CLI,但我找不到任何相反的东西,例如--quiet模式。编辑:下面是一些我希望能够抑制的输出示例。考虑到我使用了来自gitrepo的Fastfile,gym、match、cocoapods、get_version_number、increment_version_numb
我一直很高兴地使用DelayedJob习惯用法:foo.send_later(:bar)这会调用DelayedJob进程中对象foo的方法bar。我一直在使用DaemonSpawn在我的服务器上启动DelayedJob进程。但是...如果foo抛出异常,Hoptoad不会捕获它。这是任何这些包中的错误...还是我需要更改某些配置...或者我是否需要在DS或DJ中插入一些异常处理来调用Hoptoad通知程序?回应下面的第一条评论。classDelayedJobWorker 最佳答案 尝试monkeypatchingDelayed::W
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
在编写Ruby(客户端脚本)时,我看到了三种构建更长字符串的方法,包括行尾,所有这些对我来说“闻起来”有点难看。有没有更干净、更好的方法?变量递增。ifrender_quote?quote="NowthatthereistheTec-9,acrappyspraygunfromSouthMiami."quote+="ThisgunisadvertisedasthemostpopularguninAmericancrime.Doyoubelievethatshit?"quote+="Itactuallysaysthatinthelittlebookthatcomeswithit:themo
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里