SlideShare a Scribd company logo
Fastlane on Android
黃千碩 (Kros)
oSolve, Ltd./打⼯工趣
Mobile App Developer
Outline
• What is fastlane
• What to do
• How to use
• Details
• Fastlane in real-world
• 優缺點
What is Fastlane
• fastlane is the easiest way to automate beta deployments and
releases for your iOS and Android apps. 🚀 It handles all tedious
tasks, like generating screenshots, dealing with code signing, and
releasing your application.
• ⼀一個⼯工具,讓你可以⽤用很簡單的⽅方式發佈 Apps, 處理理 iOS code signing
等問題。
• 最初是為了了 iOS 開發,後來來才新增 Android。
What is Fastlane
• ⽤用 Ruby 開發的,
• Mac 可直接使⽤用。
• Windows 的朋友要有 Ruby 環境才可以使⽤用。
Why fastlane
• 應該是 Why Continuous Delivery
• 開發流程改變
• 建立專案的第⼀一天,下班前就要能夠發佈給其他⼈人測試
• ⽇日後專案掛上 CI Server 也可以使⽤用
• fastlane 是⼀一個新選擇,local/server 皆可使⽤用
How
• Gradle 上⼜又包⼀一層 Fastlane
Gradle
Fastlane
What to do
• Screenshots (⾃自動截圖、⾃自動上傳到 Google Play、處理理多國語系)
• Beta Deployment (⾃自動發佈到 Google Play Beta, Fabric)
• Release Deployment (⾃自動發佈到 Google Play)
What to do
• Screenshots (⾃自動截圖、⾃自動上傳到 Google Play)
• Beta Deployment (⾃自動發佈到 Google Play Beta, Fabric)
• Release Deployment (⾃自動發佈到 Google Play)
• 今天只討論最常⽤用的兩兩個功能
How to use
• 執⾏行行三步驟:
1. 安裝 fastlane
2. 設定好 fastlane 相關檔案參參數。
3. 在 Command Line 執⾏行行「⾃自⾏行行定義」的 fastlane 動作 (通常叫
lane)。
Setup
• 從 command line 切到專案⽬目錄底下
• fastlane init
Setup
• 多出 fastlane 資料夾
Fastlane Folder
• Appfile
• 放置參參數的地⽅方
• Fastfile
• ⾃自⾏行行定義的執⾏行行動作 (lanes)
Fastfile
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
gradle(task: "assembleRelease")
crashlytics
end
Fastfile
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
gradle(task: "assembleRelease")
crashlytics
end
• ⾃自定義⼀一個 lane
Fastfile
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
gradle(task: "assembleRelease")
crashlytics
end
• 執⾏行行 gradle 的包版指令
Fastfile
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
gradle(task: "assembleRelease")
crashlytics
end
• 上傳到 crashlytics (Fabric) beta
Fastfile
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
gradle(task: "assembleRelease")
crashlytics
end
• 如何執⾏行行?
Fastfile
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
gradle(task: "assembleRelease")
crashlytics
end
• 如何執⾏行行?
fastlane beta
Fastlane in Real World
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
ensure_git_status_clean
changelog_from_git_commits
start_git_flow_release
clean_project
test
build_staging
upload_to_fabric
clean_project
finish_git_flow_release
post_to_slack
end
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
ensure_git_status_clean
changelog_from_git_commits
start_git_flow_release
clean_project
test
build_staging
upload_to_fabric
clean_project
finish_git_flow_release
post_to_slack
end
Fastlane 提供的內建 lane
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
ensure_git_status_clean
changelog_from_git_commits
start_git_flow_release
clean_project
test
build_staging
upload_to_fabric
clean_project
finish_git_flow_release
post_to_slack
end
⾃自⾏行行定義的 lane
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
ensure_git_status_clean
changelog_from_git_commits
start_git_flow_release
clean_project
test
build_staging
upload_to_fabric
clean_project
finish_git_flow_release
post_to_slack
end
Lane
desc "Clean project"
lane :clean_project do
gradle(task: "clean")
end
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
ensure_git_status_clean
changelog_from_git_commits
start_git_flow_release
clean_project
test
build_staging
upload_to_fabric
clean_project
finish_git_flow_release
post_to_slack
end
Lane
desc "Build staging"
lane :build_staging do
gradle(
task: "assemble",
build_type: "beta",
flavor: “staging"
)
end
Private Lane
• ⼀一個不會被看到的 lane,就像 private method ⼀一樣。
desc "Submit a new Beta Build to Crashlytics Beta"
lane :beta do
ensure_git_status_clean
changelog_from_git_commits
start_git_flow_release
clean_project
test
build_staging
upload_to_fabric
clean_project
finish_git_flow_release
post_to_slack
end
Private Lane
desc "Git Flow Release Start"
private_lane :start_git_flow_release do
Dir.chdir ".." do
sh 'git flow release start "Release"'
end
end
Private Lane
desc "Git Flow Release Start"
private_lane :start_git_flow_release do
Dir.chdir ".." do
sh 'git flow release start "Release"'
end
end
Private Lane
desc "Git Flow Release Start"
private_lane :start_git_flow_release do
Dir.chdir ".." do
sh 'git flow release start "Release"'
end
end
• lane 裡⾯面可以執⾏行行 shell script
Read Config
desc "Upload to fabric beta"
private_lane :upload_to_fabric do
crashlytics(
api_token: ENV["CRASHLYTICS_API_TOKEN"],
build_secret: ENV["CRASHLYTICS_BUILD_SECRET"]
)
end
Read Config
desc "Upload to fabric beta"
private_lane :upload_to_fabric do
crashlytics(
api_token: ENV["CRASHLYTICS_API_TOKEN"],
build_secret: ENV["CRASHLYTICS_BUILD_SECRET"]
)
end
• 從 Appfile 讀出資料
Appfile
# CRASHLYTICS
ENV["CRASHLYTICS_API_TOKEN"]="xxx"
ENV["CRASHLYTICS_BUILD_SECRET"]="xxx"
Default Lane
before_all do
end
after_all do |lane|
end
error do |lane, exception|
end
Error handling
error do |lane, exception|
slack(
message: exception.message,
success: false
)
end
• 包版失敗,通知開發⼈人員
• 除了了 slack 之外,也可以⾃自⾏行行定義要做什什麼事情
Upload to Google Play
• 使⽤用 Supply
• 只能 upload and publish
• But!最需要的是 upload and save draft
• 看個⼈人需求
Fastlane actions
• 想知道 fastlane 還可以做什什麼



fastlane actions
Fastlane actions
Fastlane actions
• 想知道 fastlane 中的 gradle 可以做什什麼



fastlane actions gradle
Fastlane actions
優缺點
• 優點
• 與 iOS 共⽤用同⼀一個⼯工具
• 可⽤用 Ruby 做任何事情

(rename, move file, increase build number)
• 可以直接⽤用在 CI server 上
• Fabric 整合
優缺點
• 缺點
• 必須要有 ruby 環境 (Windows QQ)
• 額外學習 ruby 語⾔言 (團隊學習成本)
⼩小結
• 若若你尚未使⽤用包版⼯工具,可以考慮使⽤用 fastlane
• 若若同時開發 iOS 與 Android,可以考慮 fastlane
• 若若團隊的 build script 太複雜,可以考慮⽤用 fastlane 簡化
Reference
• Getting started with fastlane for Android

https://docs.fastlane.tools/getting-started/android/setup/
• Fastlane Github

https://github.com/fastlane/fastlane

More Related Content

PPTX
Flutter presentation.pptx
PPTX
Dart and Flutter Basics.pptx
PDF
Gitlab flow solo
PPTX
Flutter Intro
PDF
Tdd with python unittest for embedded c
PDF
Introduction to flutter
PDF
CI、CD、Automation你還沒準備好!?(Agile Tour Kaohsiung 2017)
PPTX
Flutter presentation.pptx
Dart and Flutter Basics.pptx
Gitlab flow solo
Flutter Intro
Tdd with python unittest for embedded c
Introduction to flutter
CI、CD、Automation你還沒準備好!?(Agile Tour Kaohsiung 2017)

What's hot (20)

PDF
Building beautiful apps with Google flutter
PPTX
Flutter workshop
PPTX
Flutter introduction
PPTX
INTRODUCTION TO FLUTTER BASICS.pptx
PPTX
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
PDF
Repository Management with JFrog Artifactory
PDF
Red Hat Java Update and Quarkus Introduction
PDF
CI/CD with Github Actions
PDF
View customize plugin for Redmineの紹介 (2019年版)
PPTX
CICD with Jenkins
PPTX
The tests are trying to tell you something@VoxxedBucharest.pptx
PDF
Flutter beyond hello world
PPTX
Final terraform
PDF
スマートフォンゲームのチート事情
PPTX
What and Why Flutter? What is a Widget in Flutter?
PPTX
Performance Testing REST APIs
PPTX
PDF
Google flutter the easy and practical way IEEE Alazhar
PDF
Jenkins
PDF
Docker architecture-04-1
Building beautiful apps with Google flutter
Flutter workshop
Flutter introduction
INTRODUCTION TO FLUTTER BASICS.pptx
DeClang 誕生!Clang ベースのハッキング対策コンパイラ【DeNA TechCon 2020 ライブ配信】
Repository Management with JFrog Artifactory
Red Hat Java Update and Quarkus Introduction
CI/CD with Github Actions
View customize plugin for Redmineの紹介 (2019年版)
CICD with Jenkins
The tests are trying to tell you something@VoxxedBucharest.pptx
Flutter beyond hello world
Final terraform
スマートフォンゲームのチート事情
What and Why Flutter? What is a Widget in Flutter?
Performance Testing REST APIs
Google flutter the easy and practical way IEEE Alazhar
Jenkins
Docker architecture-04-1
Ad

Similar to Fastlane on Android 介紹 (8)

PPTX
Fastlane
PDF
Fastlane for Androidによる継続的デリバリー
PDF
Tech Talk #5 : Apply CI tools in iOS development - Trương Minh Khôi
PDF
Ci system part ii
PPTX
Fastlane
PDF
Build and release iOS apps using Fastlane tools
PDF
自己的 Jenkins 自己來 for Android developer
PDF
Developing in the Fastlane -> How LookLive uses Fastlane to automate and spee...
Fastlane
Fastlane for Androidによる継続的デリバリー
Tech Talk #5 : Apply CI tools in iOS development - Trương Minh Khôi
Ci system part ii
Fastlane
Build and release iOS apps using Fastlane tools
自己的 Jenkins 自己來 for Android developer
Developing in the Fastlane -> How LookLive uses Fastlane to automate and spee...
Ad

More from Kros Huang (7)

PDF
Kotlin Receiver Types 介紹
PDF
Android MvRx Framework 介紹
PDF
Kotlin Data Model
PDF
Epoxy 介紹
PDF
RxJava 2.0 介紹
PDF
Rxjava 介紹與 Android 中的 RxJava
PDF
Android with dagger_2
Kotlin Receiver Types 介紹
Android MvRx Framework 介紹
Kotlin Data Model
Epoxy 介紹
RxJava 2.0 介紹
Rxjava 介紹與 Android 中的 RxJava
Android with dagger_2

Recently uploaded (20)

PPTX
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
PPTX
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
DOCX
573137875-Attendance-Management-System-original
PPTX
Welding lecture in detail for understanding
PPT
Project quality management in manufacturing
PPTX
UNIT-1 - COAL BASED THERMAL POWER PLANTS
PDF
Automation-in-Manufacturing-Chapter-Introduction.pdf
PDF
composite construction of structures.pdf
PPTX
Internet of Things (IOT) - A guide to understanding
PDF
Well-logging-methods_new................
PPTX
Construction Project Organization Group 2.pptx
PPTX
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
PPTX
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
PPTX
OOP with Java - Java Introduction (Basics)
PDF
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
PPTX
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
PDF
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
PDF
Operating System & Kernel Study Guide-1 - converted.pdf
PPTX
UNIT 4 Total Quality Management .pptx
PPTX
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx
CARTOGRAPHY AND GEOINFORMATION VISUALIZATION chapter1 NPTE (2).pptx
MET 305 2019 SCHEME MODULE 2 COMPLETE.pptx
573137875-Attendance-Management-System-original
Welding lecture in detail for understanding
Project quality management in manufacturing
UNIT-1 - COAL BASED THERMAL POWER PLANTS
Automation-in-Manufacturing-Chapter-Introduction.pdf
composite construction of structures.pdf
Internet of Things (IOT) - A guide to understanding
Well-logging-methods_new................
Construction Project Organization Group 2.pptx
Infosys Presentation by1.Riyan Bagwan 2.Samadhan Naiknavare 3.Gaurav Shinde 4...
Engineering Ethics, Safety and Environment [Autosaved] (1).pptx
OOP with Java - Java Introduction (Basics)
SM_6th-Sem__Cse_Internet-of-Things.pdf IOT
KTU 2019 -S7-MCN 401 MODULE 2-VINAY.pptx
keyrequirementskkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk
Operating System & Kernel Study Guide-1 - converted.pdf
UNIT 4 Total Quality Management .pptx
Recipes for Real Time Voice AI WebRTC, SLMs and Open Source Software.pptx

Fastlane on Android 介紹

  • 1. Fastlane on Android 黃千碩 (Kros) oSolve, Ltd./打⼯工趣 Mobile App Developer
  • 2. Outline • What is fastlane • What to do • How to use • Details • Fastlane in real-world • 優缺點
  • 3. What is Fastlane • fastlane is the easiest way to automate beta deployments and releases for your iOS and Android apps. 🚀 It handles all tedious tasks, like generating screenshots, dealing with code signing, and releasing your application. • ⼀一個⼯工具,讓你可以⽤用很簡單的⽅方式發佈 Apps, 處理理 iOS code signing 等問題。 • 最初是為了了 iOS 開發,後來來才新增 Android。
  • 4. What is Fastlane • ⽤用 Ruby 開發的, • Mac 可直接使⽤用。 • Windows 的朋友要有 Ruby 環境才可以使⽤用。
  • 5. Why fastlane • 應該是 Why Continuous Delivery • 開發流程改變 • 建立專案的第⼀一天,下班前就要能夠發佈給其他⼈人測試 • ⽇日後專案掛上 CI Server 也可以使⽤用 • fastlane 是⼀一個新選擇,local/server 皆可使⽤用
  • 6. How • Gradle 上⼜又包⼀一層 Fastlane Gradle Fastlane
  • 7. What to do • Screenshots (⾃自動截圖、⾃自動上傳到 Google Play、處理理多國語系) • Beta Deployment (⾃自動發佈到 Google Play Beta, Fabric) • Release Deployment (⾃自動發佈到 Google Play)
  • 8. What to do • Screenshots (⾃自動截圖、⾃自動上傳到 Google Play) • Beta Deployment (⾃自動發佈到 Google Play Beta, Fabric) • Release Deployment (⾃自動發佈到 Google Play) • 今天只討論最常⽤用的兩兩個功能
  • 9. How to use • 執⾏行行三步驟: 1. 安裝 fastlane 2. 設定好 fastlane 相關檔案參參數。 3. 在 Command Line 執⾏行行「⾃自⾏行行定義」的 fastlane 動作 (通常叫 lane)。
  • 10. Setup • 從 command line 切到專案⽬目錄底下 • fastlane init
  • 12. Fastlane Folder • Appfile • 放置參參數的地⽅方 • Fastfile • ⾃自⾏行行定義的執⾏行行動作 (lanes)
  • 13. Fastfile desc "Submit a new Beta Build to Crashlytics Beta" lane :beta do gradle(task: "assembleRelease") crashlytics end
  • 14. Fastfile desc "Submit a new Beta Build to Crashlytics Beta" lane :beta do gradle(task: "assembleRelease") crashlytics end • ⾃自定義⼀一個 lane
  • 15. Fastfile desc "Submit a new Beta Build to Crashlytics Beta" lane :beta do gradle(task: "assembleRelease") crashlytics end • 執⾏行行 gradle 的包版指令
  • 16. Fastfile desc "Submit a new Beta Build to Crashlytics Beta" lane :beta do gradle(task: "assembleRelease") crashlytics end • 上傳到 crashlytics (Fabric) beta
  • 17. Fastfile desc "Submit a new Beta Build to Crashlytics Beta" lane :beta do gradle(task: "assembleRelease") crashlytics end • 如何執⾏行行?
  • 18. Fastfile desc "Submit a new Beta Build to Crashlytics Beta" lane :beta do gradle(task: "assembleRelease") crashlytics end • 如何執⾏行行? fastlane beta
  • 20. desc "Submit a new Beta Build to Crashlytics Beta" lane :beta do ensure_git_status_clean changelog_from_git_commits start_git_flow_release clean_project test build_staging upload_to_fabric clean_project finish_git_flow_release post_to_slack end
  • 21. desc "Submit a new Beta Build to Crashlytics Beta" lane :beta do ensure_git_status_clean changelog_from_git_commits start_git_flow_release clean_project test build_staging upload_to_fabric clean_project finish_git_flow_release post_to_slack end Fastlane 提供的內建 lane
  • 22. desc "Submit a new Beta Build to Crashlytics Beta" lane :beta do ensure_git_status_clean changelog_from_git_commits start_git_flow_release clean_project test build_staging upload_to_fabric clean_project finish_git_flow_release post_to_slack end ⾃自⾏行行定義的 lane
  • 23. desc "Submit a new Beta Build to Crashlytics Beta" lane :beta do ensure_git_status_clean changelog_from_git_commits start_git_flow_release clean_project test build_staging upload_to_fabric clean_project finish_git_flow_release post_to_slack end
  • 24. Lane desc "Clean project" lane :clean_project do gradle(task: "clean") end
  • 25. desc "Submit a new Beta Build to Crashlytics Beta" lane :beta do ensure_git_status_clean changelog_from_git_commits start_git_flow_release clean_project test build_staging upload_to_fabric clean_project finish_git_flow_release post_to_slack end
  • 26. Lane desc "Build staging" lane :build_staging do gradle( task: "assemble", build_type: "beta", flavor: “staging" ) end
  • 27. Private Lane • ⼀一個不會被看到的 lane,就像 private method ⼀一樣。
  • 28. desc "Submit a new Beta Build to Crashlytics Beta" lane :beta do ensure_git_status_clean changelog_from_git_commits start_git_flow_release clean_project test build_staging upload_to_fabric clean_project finish_git_flow_release post_to_slack end
  • 29. Private Lane desc "Git Flow Release Start" private_lane :start_git_flow_release do Dir.chdir ".." do sh 'git flow release start "Release"' end end
  • 30. Private Lane desc "Git Flow Release Start" private_lane :start_git_flow_release do Dir.chdir ".." do sh 'git flow release start "Release"' end end
  • 31. Private Lane desc "Git Flow Release Start" private_lane :start_git_flow_release do Dir.chdir ".." do sh 'git flow release start "Release"' end end • lane 裡⾯面可以執⾏行行 shell script
  • 32. Read Config desc "Upload to fabric beta" private_lane :upload_to_fabric do crashlytics( api_token: ENV["CRASHLYTICS_API_TOKEN"], build_secret: ENV["CRASHLYTICS_BUILD_SECRET"] ) end
  • 33. Read Config desc "Upload to fabric beta" private_lane :upload_to_fabric do crashlytics( api_token: ENV["CRASHLYTICS_API_TOKEN"], build_secret: ENV["CRASHLYTICS_BUILD_SECRET"] ) end • 從 Appfile 讀出資料
  • 35. Default Lane before_all do end after_all do |lane| end error do |lane, exception| end
  • 36. Error handling error do |lane, exception| slack( message: exception.message, success: false ) end • 包版失敗,通知開發⼈人員 • 除了了 slack 之外,也可以⾃自⾏行行定義要做什什麼事情
  • 37. Upload to Google Play • 使⽤用 Supply • 只能 upload and publish • But!最需要的是 upload and save draft • 看個⼈人需求
  • 38. Fastlane actions • 想知道 fastlane 還可以做什什麼
 
 fastlane actions
  • 40. Fastlane actions • 想知道 fastlane 中的 gradle 可以做什什麼
 
 fastlane actions gradle
  • 42. 優缺點 • 優點 • 與 iOS 共⽤用同⼀一個⼯工具 • 可⽤用 Ruby 做任何事情
 (rename, move file, increase build number) • 可以直接⽤用在 CI server 上 • Fabric 整合
  • 43. 優缺點 • 缺點 • 必須要有 ruby 環境 (Windows QQ) • 額外學習 ruby 語⾔言 (團隊學習成本)
  • 44. ⼩小結 • 若若你尚未使⽤用包版⼯工具,可以考慮使⽤用 fastlane • 若若同時開發 iOS 與 Android,可以考慮 fastlane • 若若團隊的 build script 太複雜,可以考慮⽤用 fastlane 簡化
  • 45. Reference • Getting started with fastlane for Android
 https://docs.fastlane.tools/getting-started/android/setup/ • Fastlane Github
 https://github.com/fastlane/fastlane