a collection of tools that help you automate building and releasing iOS and Android apps。用中文說,就是用來構建打包的工具。可支持iOS和Android操做系統。fastlane是用Ruby語言編寫的一套自動化工具集和框架,每個工具實際都對應一個Ruby腳本,用來執行某一個特定的任務,而fastlance核心框架則容許使用者經過相似配置文件的形式,將不一樣的工具結合在一塊兒,從而造成一個個完整的自動化流程。python
詳細內容可看:自動化打包之Fastlane https://blog.csdn.net/kuangdacaikuang/article/details/80443515 。linux
舉例:npm
desc "Build beta package and upload to xx.com"
#lane表示一個打包流程 例子中,此流程名叫build_for_beta。假設咱們的App名叫myApp lane :build_for_beta do update_info_plist( plist_path: "myApp/Info.plist", display_name: "myApp_test" ) #設置plist中key1值爲value1 set_info_plist_value(path: "./myApp/Info.plist", key: "key1", value: "value1") version_number = get_version_number( xcodeproj: "./myApp.xcodeproj" ) # 打完包的產物都會以這個參數命名 myApp_archive_name = "myApp_v#{version_number}_beta" end
info.plist是應用app的配置文件,能夠在此定義Bundle的版本號CFBundleShortVersionString,應用程序版本號CFBundleVersion,應用名稱CFBundleDisplayName,啓動圖標CFBundleIcons,應用標識號CFBundleIdentifier,是否支持後臺運行UIApplicationExitsOnSuspend,須要的權限等。如下info.plist裏定義的app名叫:myApp,版本爲5.1.0-300xcode
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>zh_CN</string> <key>CFBundleDisplayName</key> <string>myApp</string> <key>CFBundleIdentifier</key> <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string> <key>CFBundleName</key> <string>$(PRODUCT_NAME)</string> <key>CFBundleShortVersionString</key> <string>5.1.0</string> <key>CFBundleVersion</key> <string>300</string> <key>DEBUG</key> <integer>1</integer> <key>NSAppleMusicUsageDescription</key> <string>是否容許訪問媒體資料庫?</string> <key>NSBluetoothPeripheralUsageDescription</key> <string>是否容許訪問藍牙?</string> </dict> </plist>
3. /usr/libexec/Plistbuddy
plist是Mac種很是廣泛的一種文件格式,相似xml,經過鍵值對的方式來進行一些配置。而PlistBuddy則是Mac自帶的專門解析plist的小工具詳情可參見:https://www.jianshu.com/p/2167f755c47eruby
使用plistbuddy輸出及修改版本號,命令以下:app
buildnum=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${plist}") buildnum=$(expr $buildnum + 1) /usr/libexec/Plistbuddy -c "Set CFBundleVersion $buildnum" "${plist}"
rvm是一個命令行工具,能夠提供一個便捷的多版本Ruby環境管理和切換。框架
gem是管理ruby程序的程序,相似python下的pip 或 Node.js 裏的npm。工具
gemfile裏定義應用依賴的第三方包,bundle根據該配置尋找這些包。ui
homebrew簡稱brew,是Mac OSX上的軟件包管理工具,相似linux裏的apt-get / yum等。經常使用命令有:spa
brew update #更新homebrew的信息 brew outdated #查看須要升級的軟件 brew upgrade xxx #指定升級某軟件 brew upgrade #升級全部軟件 brew cleanup
bundler是管理多版本gem的工具。bundle文件能夠理解爲資源文件包。咱們將許多圖片、文本文件組織在一塊兒,打包成一個bundle文件,方便在其餘項目中引用包內的資源。bundle是靜態的,不參加項目編譯,不包含可執行文件。
版本和內部版本號碼Key
分別指定市場和應用程序的內部版本。agvtool是一個命令行工具,它容許你這些數字自動遞增到下一個最高號碼或特定號碼。更新及查看版本號命令爲:
agvtool new-marketing-version <your_specific_version>
agvtool what-marketing-version
// build
agvtool new-version -all 1.0.0
agvtool what-version
pod是用來管理iOS庫的工具,經過CocoaPods工具咱們能夠爲項目添加被稱爲「Pods」的依賴庫(這些類庫必須是CocoaPods自己所支持的),而且能夠輕鬆管理其版本。