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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
yagi
February 01, 2017
Technology
4
710
Androidアプリケーションのビルド体験をリモートインスタンスで改善する
Enjoy Android Application Development !
yagi
February 01, 2017
Tweet
Share
More Decks by yagi
See All by yagi
医療現場の解像度を上げるために 開発チームが行っている取り組み
sys1yagi
0
860
これどうやって動いてるんだ? Spring Framework/Bootのソースを読む
sys1yagi
1
1.4k
Kotlin コルーチンを 理解しよう 2019 - KotlinFest2019 -
sys1yagi
40
32k
5分でわかるKotlin Coroutines Flow
sys1yagi
21
19k
Androidと非同期処理 とCoroutine1.0.0
sys1yagi
12
14k
Kotlin コルーチンを 理解しよう
sys1yagi
41
25k
アーキテクチャと Scaffolding Template
sys1yagi
8
1.4k
Androidの非同期処理をKotlinコルーチンで行う
sys1yagi
3
24k
解剖Kotlin ~バイトコードを読み解く~
sys1yagi
18
11k
Other Decks in Technology
See All in Technology
LLMに何を任せ、何を任せないか
cap120
10
5.6k
20年以上続く PHP 大規模プロダクトを Kubernetes へ ── クラウド基盤刷新プロジェクトの4年間
oogfranz
PRO
0
310
イベントで大活躍する電子ペーパー名札を作る(その2) 〜 M5PaperとM5PaperS3 〜 / IoTLT @ JLCPCB オープンハードカンファレンス
you
PRO
0
210
Phase12_総括_自走化
overflowinc
0
1.5k
Windows ファイル共有(SMB)を再確認する
murachiakira
PRO
0
280
GitHub Copilot CLI で Azure Portal to Bicep
tsubakimoto_s
0
190
韓非子に学ぶAI活用術
tomfook
3
770
私がよく使うMCPサーバー3選と社内で安全に活用する方法
kintotechdev
0
110
Change Calendarで今はOK?を仕組みにする
tommy0124
1
110
A4)シラバスを超えて語る、テストマネジメント
moritamasami
0
130
形式手法特論:SMT ソルバで解く認可ポリシの静的解析 #kernelvm / Kernel VM Study Tsukuba No3
ytaka23
1
800
FlutterでPiP再生を実装した話
s9a17
0
180
Featured
See All Featured
BBQ
matthewcrist
89
10k
Are puppies a ranking factor?
jonoalderson
1
3.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
199
73k
What's in a price? How to price your products and services
michaelherold
247
13k
Automating Front-end Workflow
addyosmani
1370
200k
How to train your dragon (web standard)
notwaldorf
97
6.6k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
690
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
420
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
150
Code Reviewing Like a Champion
maltzj
528
40k
Transcript
"OESPJEΞϓϦέʔγϣϯ ͷϏϧυମݧΛϦϞʔτΠϯ ελϯεͰվળ͢Δ 2017/02/01 ୈ2ճελʔτΞοϓAndroidษڧձ Toshihiro Yagi
ࣗݾհ w 5PTIJIJSP:BHJ !TZTZBHJ w DPPLQBE w "OESPJEΤϯδχΞ ٕज़෦
"OESPJEΞϓϦέʔγϣϯ ͷϏϧυͷ՝ w Ϗϧυʹ͕͔͔࣌ؒΔ w ϏϧυΛͭؒ$16ϝϞϦΛઐ༗ ͞Εͯ͠·ͬͯଞͷ࡞ۀ͕Ͱ͖ͳ͍
"OESPJEΞϓϦέʔγϣϯ ͷϏϧυͷ՝ w Ϗϧυʹ͕͔͔࣌ؒΔ w ϏϧυΛͭؒ$16ϝϞϦΛઐ༗ ͞Εͯ͠·ͬͯଞͷ࡞ۀ͕Ͱ͖ͳ͍
None
ରࡦ w CVJMEHSBEMFΛνϡʔχϯά w *OTUBOU3VOΛ͏ w ϋΠεϖοΫϚγϯΛௐୡ
ରࡦ w CVJMEHSBEMFΛνϡʔχϯά w *OTUBOU3VOΛ͏ w ϋΠεϖοΫϚγϯΛௐୡ w ϦϞʔτϏϧυΛ͏OFX
ϦϞʔτϏϧυͷงғؾ Local Machine ᶃ sync code Remote Machine ᶄ build
ᶅ get apk ᶆ install apk & launch activity Ϗϧυͷ෦ΛϦϞʔτϚγϯʹҕৡ͢Δ͜ͱͰ ϩʔΧϧϚγϯͷϦιʔεΛઐ༗͠ͳ͍
ϦϞʔτϏϧυͷར w ϩʔΧϧϚγϯͷϦιʔεΛѹഭ͠ͳ͍ w ෳͷϚγϯ͔Β͑ΔڥΛͭ͘ΕΔ w ϦϞʔτϚγϯͷεϖοΫ࣍ୈͰύϑΥʔ Ϛϯεແݶେ w ΫϥυΛ͏߹
ࣗ༝ʹࣺͯΒΕΔ
ϦϞʔτϏϧυڥߏஙखॱ w ϦϞʔτϚγϯΛ༻ҙ͢Δ w ϦϞʔτϚγϯͷڥΛ࡞Δ w ϦϞʔτϏϧυ༻ͷεΫϦϓτΛ༻ҙ͢Δ w ͏ɻշదɻ࠷ߴ?P? w
ίετͱ
ϦϞʔτϚγϯΛ༻ҙ͢Δ w ༨ͬͨϚγϯ w ϦϞʔτΠϯελϯε ($1 "84 "[VSFʜ
ϦϞʔτϚγϯΛ༻ҙ͢Δ w ༨ͬͨϚγϯ w ϦϞʔτΠϯελϯε ($1 "84 "[VSFʜ
ϦϞʔτϚγϯͷڥΛ࡞Δ w "84 ($1ͳͲͰΠϯελϯεΛ࡞Δ w ϦϞʔτϚγϯͷ੩త*1Λઃఆ͢Δ w BOESPJEͷϏϧυڥΛߏங͢Δ w ϩʔΧϧϚγϯͰTTILFZΛൃߦͯ͠ొ͢Δ
ϦϞʔτϚγϯͷڥΛ࡞Δ http://sys1yagi.hatenablog.com/entry/2016/11/13/162400
ϦϞʔτϏϧυ༻ͷ εΫϦϓτΛ༻ҙ͢Δ GBCSJDΛͬͨྫ @task def build(): build_dir = tmp_dir +
package sync(build_dir) gradle_cmd = assemble_command() apk_name = apk_name_format() # run gradlew on remote instance with cd(build_dir): run(gradle_cmd) # get apk local("mkdir -p " + module + "/build/outputs/apk/") get(remote_path=build_dir + "/" + module + "/build/outputs/apk/" + apk_name, local_path=module + "/build/outputs/apk/") # start App local("adb" + " push ./" + module + "/build/outputs/apk/" + apk_name + " /data/local/tmp/" + package) local("adb" + " shell pm install -r '/data/local/tmp/" + package + "'") local("adb" + " shell am start -n '" + package + "/" + launch_activity + "' -a android.intent.action.MAIN -c android.intent.category.LAUNCHER")
͏ɻշదɻ࠷ߴ?P?
ίετͱ w େମշదͳεϖοΫ w ($1OIJHIDQV ถࠃ I w "84DYMBSHF ౦ژ
I w ͣͬͱىಈͬ͠ͺͳ͠ͷ߹ֹ݄ w ($1 w "84
ࣗಈγϟοτμϯ w $MPVE8BUDIΛͬͨࣗಈγϟοτμϯ "84 w ͖͍͠Λz࣌ؒʹର͢Δ$166UJMJ[BUJPO $166UJMJ[BUJPO zͰઃఆ w
ΞΫγϣϯͱͯ͠γϟοτμϯΛઃఆ w ىಈGBCSJDͰCPUPΛͬͯϏϧυ࣌ʹ"1* Λୟ͘ w ($1DSPOࠐΉͱ͔ʹͳΓͦ͏ɻHDMPVEͰىಈ
ϲ݄ͷར༻࣌ؒͱίετ w ΤϯδχΞ໊ w ߹ܭར༻࣌ؒd࣌ؒ w ֹ݄d w Ұਓ͋ͨΓd
ମݧ͕͍͍͘͢͝ͷͰੋඇ͓ࢼ͍ͩ͘͠͞ɻ
ͱΓ͋͑ͣؾܰʹࢼͯ͠Έ͍ͨͱ ͍͏࣌
$ZCPSH#VJME http://cyborg-build.com/
$ZCPSH#VJMEͷΈ Local Machine GCS Bucket Cyborg-Build.com Remote Instance ᶃrsync code
ᶄbuild request ᶅremote op ᶆrsync code ᶇbuild on docker ᶈupload artefacts ᶉdownload artefacts ᶊinstall & launch ϩάΠϯͨ͠(PPHMFΞΧϯτͱDZCPSHCVJMEDPNͷΈ͕ιʔείʔυʹ৮ΕΔߏ
"MQIB1SFWJFX w ࠓͷͱ͜Ζແྉ w HDMPVE GBCSJDͰར༻Մೳ w CVJMEMBVODIͷ΄͔UFTUMJOU݁Ռͷอଘͳ Ͳαϙʔτ w
*%&"QMVHJOԽ༧ఆ w ͥͻ͓ࢼ͍ͩ͘͠͞ϑΟʔυόοΫ͍ͩ͘͞
&OKPZ "OESPJE"QQMJDBUJPO %FWFMPQNFOU