Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
給忙碌開發者的Android開發流程自動化簡介
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Elvis Lin
October 15, 2016
Programming
18
3.2k
給忙碌開發者的Android開發流程自動化簡介
簡介開發者為什麼需要 Continuous Integration,以及在 Android 開發上需要實踐 Continuous Integration 的基本步驟 #JCConf2016
Elvis Lin
October 15, 2016
Tweet
Share
More Decks by Elvis Lin
See All by Elvis Lin
Protect Users' Privacy in iOS 14
elvismetaphor
0
56
Dubugging Tips and Tricks for iOS development
elvismetaphor
0
56
Strategies of Facebook LightSpeed project
elvismetaphor
0
96
Background Execution And WorkManager
elvismetaphor
2
490
作為一個跨平台的 Mobile App 開發者,從入門到放棄!?
elvismetaphor
2
540
Dependency Injection for testability of iOS app
elvismetaphor
1
1.5k
Briefly Introduction of Kotlin coroutines
elvismetaphor
1
310
MotionLayout Brief Introduction
elvismetaphor
1
340
Chapter 10. Pattern Matching with Regular Expressions
elvismetaphor
0
57
Other Decks in Programming
See All in Programming
Kubernetesでセルフホストが簡単なNewSQLを求めて / Seeking a NewSQL Database That's Simple to Self-Host on Kubernetes
nnaka2992
0
160
CSC307 Lecture 14
javiergs
PRO
0
480
今からFlash開発できるわけないじゃん、ムリムリ! (※ムリじゃなかった!?)
arkw
0
120
Claude Codeログ基盤の構築
giginet
PRO
7
3.5k
AI時代のシステム設計:ドメインモデルで変更しやすさを守る設計戦略
masuda220
PRO
6
1.1k
GC言語のWasm化とComponent Modelサポートの実践と課題 - Scalaの場合
tanishiking
0
120
Fundamentals of Software Engineering In the Age of AI
therealdanvega
2
260
ロボットのための工場に灯りは要らない
watany
11
3k
米国のサイバーセキュリティタイムラインと見る Goの暗号パッケージの進化
tomtwinkle
2
610
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
180
安いハードウェアでVulkan
fadis
0
540
Codexに役割を持たせる 他のAIエージェントと組み合わせる実務Tips
o8n
4
1.4k
Featured
See All Featured
Speed Design
sergeychernyshev
33
1.6k
Practical Orchestrator
shlominoach
191
11k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
290
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Utilizing Notion as your number one productivity tool
mfonobong
4
260
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
180
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
120
Un-Boring Meetings
codingconduct
0
230
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
140
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
130
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
310
BBQ
matthewcrist
89
10k
Transcript
妔盜繓樄咳ᘏጱ Android樄咳窕纷ᛔ㵕玕墋Օ Elvis Lin 2016/10/15
Agenda • 樄咳ᘏૡ֢碻䨝蝽کጱࢯ櫞 • 瞱媲褸౮ҁContinuous Integration҂101 • 禊蝄ℂ樄咳牏翥捌牏介手牏۱ጱ螂纷Ӿ牧ݱ圵ݢ 犥ֵአጱૡٍ蚤ᒽኼ •
ٌ犢ፘ橕ጱૡٍ
About Me Elvis Lin Mobile Application Developer • Github: https://github.com/elvismetaphor
• Blog: http://blog.elvismetaphor.me
盜繓樄咳ᘏጱӞॠ • 狕硬纷ୗҁࢩ傶憒໒݈虋ԧ҂ • 翥捌०硻ҁࢩ傶֦㴄㴄狕硬ԧ纷ୗ҂ • ತ BUGҁࢩ傶֦㴄㴄狕硬ԧ纷ୗ҂ • ᯿蕦Ӥ蝄㵕֢
• 奰ෝݢ犥樄ত䌃碝ۑ胼ԧ • ۑ胼䌃کӞ聲樿统簁ᥝ姴盪ڊӞ㮆粚 • ꔇꔇ
䌃嘨综ӣդ牧瞟恝藮Ӟኞ!?
樄咳ᘏጱ෭ଉ 憒㴟 樄咳 ୌᗝ 介手 咳㬙 粚ᓕቘ Issue Tracking 翥捌
戔ਧ
樄咳ᘏጱࢯह • ℂڡত䯤మک叨ߝ۱咳㬙ጱ窕纷盄裾 • Ԫ眐ፘ吚ጱ耆卓 • 樄咳ᘏጱԆᥝ犨率䛑扗ฎ樄咳碝ۑ胼
But, 蝡ฎӞ㮆 Bot ጱ碻դ
䛑扗珿አૡٍ 褔犵樄咳ᘏጱ揗砾
https://www.jitbit.com/alexblog/249-now-thats-what-i-call-a-hacker/
Every time they got a problem they found that they
were still repeating what they were doing. They would write a tool for it, automate it. — Edmond Lau
瞱媲碉ݳҁCI҂
https://insights.sei.cmu.edu/devops/2015/01/continuous-integration-in-devops-1.html
樄咳
ૡཿ珿ٌԪ牧ضڥٌ瑊
珿አ Android Studio • ԧ薹ଉአጱ盠ഠ棎 • 狕硬戔ਧ䲆䔶玕樄咳絑ह • 㶓ڊ戔ਧ䲆 •
疥戔ਧ䲆硯獈粚ᓕቘ羬翄
None
㶓獈膏㶓ڊSettings
粚矒ګ
Git • 獤碂ୗጱ粚矒ګ羬翄 • Gitlab — ࣁᛔ૩ጱԆ秚Ӥ礍戔 Git Server •
GitHub — 娄Ӥጱܻত嘨դᓕ๐率
GitHub • 纷ୗ嘨ጱ粚ᓕቘ • կ物۱ೡᛔ㵕ኞ౮ጱ牏䟖አ觊Markdown承ጱREADME 䲆礯 • 㺔氂蝍擽羬翄ҁݶ碻ݢአෝۑ胼襑穩҂ • Wiki
• 犨率ڜ蔭 • ኚ粬瑽
Zenhub 疥 Github Issues 犥̿፡礂̀ොୗ ᓕቘ
None
None
None
瞱媲碉ݳ๐率
ଉ憎ጱ瞱媲碉ݳ๐率 • Jenkins — ࣁᛔ૩ጱԆ秚Ӥ礍戔瞱媲碉ݳ֑๐瑊 • Travis CI — 娄Ӥጱ瞱媲碉ݳ֑๐瑊ҁ犖磪㻌秚粚҂
Jenkins • ݢ犥ਧ碻礬硁粬ਧ礿կጱ藉咳㬵䁆ᤈ粬ਧጱ犨率 • ᛔ㵕玕翥捌膏介手ጱ㵕֢ • 磪战ग़ plugins ݢ犥蚤ٌ犢๐率Ӟݶֵአ •
磪 Web ጱ瑽୵玕戔ਧՕᶎ
Travis CI
ࣁ Travis CI 翥捌 Android
ୌᗝ/翥捌
Gradle • ℂ Command Line ک IDE ک CI Server
᮷磪ඪൔ • Groovy Script (चෝ Groovy 戔懯ጱ DSL) • Product Flavour • Powerful Dependencies Management
ࣁ犤ڜ翥捌 Android • Windows > gradlew.bat assembleDebug • Mac $
chmod +x gradlew $ ./gradlew assembleDebug • 䁆ᤈᛔ懪ጱ犨率 $ ./gradlew tasks
介手
FIRST • Fast • Independant • Repeatable • Self Validation
• Timely
The AAA Pattern • Arrange • Act • Assert
ଉአጱ介手 Library • JUnit 4 • Android Test Support Library
• Robolectric • Espresso • Mockito
JUnit • 㻌ز介手 • ݝ胼朼䌘奈 Java ጱ API
Android Testing Support Library • ׀ Android API ጱ介手 •
襑ᥝࣁ䋿誢秚瑊秇硈瑊Ӥ䁆ᤈ
Robolectric • 䁆ᤈ Android API ፘ橕ጱ㻌ز介手ࣁ襎脲Ӥ • 䁆ᤈ蝧ଶ斃盠
Espresso • UI 介手ጱૡٍ • ݢ犥奾ݳ Cucumber 䁆ᤈ涢硩介手
Mockito • Mock Framework
Clean Architecture https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html
CleanӞ膢ฎ瞲牧դ嘨犥၇莡ጱ୵制狅硁 Ӟਧጱ狅蚅憒㳷ᤩ㴟獤傶ग़䍅物獉䍅䌘ෝ क़䍅Ӟ篷ಅᎣ牐蝡疰ޱ茐狅蚅ݝ胼ኧक़ ݻ獉牐
咳㬙
Grade Play Publisher Plugin • Ӟ㮆 Gradle ጱ plugin牧翥捌螂纷碉ݳ臑অ •
虏 APK Ӥ㯽ک Google Play ጱ螂纷ݢ犥㷢碍玕
Crashlytic • 痀ෝ Fabric Mobile Development Kits ጱӞ蟂犩 • 蝍擽ֵአᘏ咳ኞጱ梊藮
• 叨ኞ梊藮䁭ޞ • 朼䌘犋ݶጱ秚ࣳ牏碻樌牏纷ୗ嘨֖ᗝ֢ڊ獤觊
None
者奾 • Ӟ㮆叨ߝکᥝݢ犥咳㬙妔ֵአᘏԏ獮牧ᛗ۱珀樄咳牏 ୌᗝ/翥捌牏介手ጱ㵕֢ • ᛔ㵕玕覍໐ஞጱૡ֢牧䌕ဳ樄咳ۑ胼 • 脻玕ྯ㮆㵕֢牧虏犋ݶጱ樄咳Ո㹓ݢ犥وՁፘݶጱ 戔ਧ
㷢ᘍ䨗罕
氎ܻێ纷ୗԏᐟ 膏֦ݶࣁ