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
PWA 품은 안드로이드 웹뷰 성능 개선기
Search
Jinny You
April 05, 2019
Programming
0
1.1k
PWA 품은 안드로이드 웹뷰 성능 개선기
2019 드로이드 나이츠(Droid Knights)에서 발표한 자료입니다.
Jinny You
April 05, 2019
Tweet
Share
More Decks by Jinny You
See All by Jinny You
디자이너와 개발자가 자주 겪는 Lottie 핸드오프 FAQ - Figma Config Watch Party Seoul
tinyjin
0
46
인디 앱 개발자와 Flutter
tinyjin
0
360
모던 웹 기술로 C++ 렌더링 엔진 테스트 자동화하기
tinyjin
0
29
그래픽 엔진 포팅 사례로 배우는 웹어셈블리 웹 컴포넌트 개발부터 디버깅, 최적화까지
tinyjin
0
290
韩国的打卡地:你喜欢海边吗?
tinyjin
0
31
LottieFiles로 시작하는 빠르고 효율적인 애니메이션 핸드오프
tinyjin
0
72
エンジニアが見つめるLottieアニメーション
tinyjin
0
100
ThorVG's Lottie Model in Action
tinyjin
0
200
국민대학교 사제동행 세미나
tinyjin
0
350
Other Decks in Programming
See All in Programming
カオスに立ち向かう小規模チームの装備の選択〜フルスタックTSという装備の強み _ 弱み〜/Choosing equipment for a small team facing chaos ~ Strengths and weaknesses of full-stack TS~
bitkey
1
140
Improve my own Ruby
sisshiki1969
1
110
データベースの技術選定を突き詰める ~複数事例から考える最適なデータベースの選び方~
nnaka2992
0
590
SwiftDataのカスタムデータストアを試してみた
1mash0
0
150
エンジニアが挑む、限界までの越境
nealle
1
330
AIコーディングの理想と現実
tomohisa
37
40k
20250426 GDGoC 合同新歓 - GDGoC のススメ
getty708
0
110
Jakarta EE Meets AI
ivargrimstad
0
890
LRパーサーはいいぞ
ydah
7
1.3k
CursorとDevinが仲間!?AI駆動で新規プロダクト開発に挑んだ3ヶ月を振り返る / A Story of New Product Development with Cursor and Devin
rkaga
1
640
KANNA Android の技術的課題と取り組み
watabee
1
490
AIコーディングエージェントを 「使いこなす」ための実践知と現在地 in ログラス / How to Use AI Coding Agent in Loglass
rkaga
4
1.3k
Featured
See All Featured
Scaling GitHub
holman
459
140k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
12k
Producing Creativity
orderedlist
PRO
344
40k
Automating Front-end Workflow
addyosmani
1370
200k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
YesSQL, Process and Tooling at Scale
rocio
172
14k
The Cost Of JavaScript in 2023
addyosmani
49
7.8k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
570
KATA
mclloyd
29
14k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.4k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.8k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Transcript
18"ಿ উ٘۽٘ਢ࠭ࢿמѐࢶӝ 4QFBLFS ߅ࢳ ਬ
ӝࣗѐ ߅ࢳ ޖо҅ࣘߓҊरউ٘۽٘ѐߊ ਬ ࢜۽Ѧदب೧ࠁҊरਢѐߊ !NJOTFPLLS !UJOZKJO JBNNJOTFPLQBSL!HNBJMDPN CBSBN!HNBJMDPN
֬ৈ࢚ട बܻ࢚ݫन ۽झ
बܻ࢚ݫन ۽झ ֎ झఋসੑפ ֬ৈ࢚ട
֬ৈ࢚ട ӏݽসؘ ೠػܻࣗझ טযաח୭ജ҃ইצҊёٜ࠙ ೧৻ࢎਊ וܽੋఠ֔
ӒۢীبࠛҳೞҊજࢲ࠺झ҃ਸઁҕೞҊर ֬ৈ࢚ട ӏݽসؘ ೠػܻࣗझ טযաח୭ജ҃ইצҊёٜ࠙ ೧৻ࢎਊ וܽੋఠ֔
ӒۢীبࠛҳೞҊજࢲ࠺झ҃ਸઁҕೞҊर ֬ৈ࢚ട ӏݽসؘ ೠػܻࣗझ טযաח୭ജ҃ইצҊёٜ࠙ ೧৻ࢎਊ וܽੋఠ֔
ࢲ࠺झীࠄѺਵ۽ ਢਸ֍যࠁ
ӒۢীبࠛҳೞҊજࢲ࠺झ҃ਸઁҕೞҊर ֬ৈ࢚ട ӏݽসؘ ೠػܻࣗझ טযաח୭ജ҃ইצҊёٜ࠙ ೧৻ࢎਊ וܽੋఠ֔ ࢲ࠺झীࠄѺਵ۽
ਢਸ֍যࠁ ખܲ
֬ৈ࢚ട
ޤ উ٘۽٘ஶಌ۠झীਢਸоҊ৳Ҋ Ӓ۞פө
ޤ উ٘۽٘ஶಌ۠झীਢਸоҊ৳Ҋ Ӓ۞פө উबೞࣁਃ উ٘۽٘҃ҕਬੑפ
ܻח৵18"ܳोחо 18"ܳࢶఖೞӝөৈj
ܻח৵18"ܳोחо ਢࢎਊ҃ਸѐࢶೞӝਤೠ ৈ۞ݧӝࣿ 18"ӝמ நद ਢಹए Ѿઁ
കചݶীࢸ
ܻח৵18"ܳोחо 4FSWJDF8PSLFSח 18"ӝࣿѐߊਸب৬ח࠳ۄ"QJ
ܻח৵18"ܳोחо ਢ࠭ܳࢎਊೞחজ ו۷؍ࣘبj ࣘبܳࡅܰѱೞӝਤ೧ࢲח tநदu t٘झܻu t443u t"1*୭ചu
ܻࢶఖ நदઙܨীחযڃѱ ਢநद 18"நद 18"ۄҊ࢜۽աৡਢӝࣿ؍ؘযڃѢ ਢநदࠁ؊աਵ۰ա
ܻח৵18"ܳोחо ਢநदחযڌѱزೞחо $BDIF$POUSPM &5BH ݅ܐदрӝ߈ ٣ణޙӝ߈
ܻח৵18"ܳोחо $BDIF$POUSPM நदоਬؼӝрदр ݅ܐदрӝ߈
ܻח৵18"ܳोחо $BDIF$POUSPM நदоਬؼӝрदр ࢜۽ܻࣗझо৬ب ݅ܐदрӝ߈
ܻח৵18"ܳोחо $BDIF$POUSPM நदоਬؼӝрदр ࢜۽ܻࣗझо৬ب दрաӝөח ܻࣗझসؘоࠛоמ ݅ܐदрӝ߈
ܻח৵18"ܳोחо &5BH ۽ஸ <fsa88sad8v> ࢲߡ <9asd8f7v8a> == ٣ణޙӝ߈
ܻח৵18"ܳोחо &5BH ۽ஸ <fsa88sad8v> ࢲߡ <9asd8f7v8a> == ٣ణޙӝ߈ ۽ஸҗࢲߡীח ٣ణޙਸ࠺ҮѨࢎೞӝਤ೧
֎ਕాनࣻ
ܻח৵18"ܳोחо &5BH ۽ஸ <fsa88sad8v> ࢲߡ <9asd8f7v8a> == ٣ణޙӝ߈ ۽ஸҗࢲߡীח ٣ణޙਸ࠺ҮѨࢎೞӝਤ೧
֎ਕాनࣻ ֎ਕాन߽ݾਸ೧Ѿೡࣻহ
ܻח৵18"ܳोחо 18"நदחযڌѱزೞחо நदܳসؘೞӝਤ೧ࢲח ਃೡٸߡ٘ܳ߄Բӝ݅ೞݶؽ ਬോदрਸഝਊೠܻࣗझসؘ ֎ਕ߽ݾਵ۽ੋೠו۰ߊࢤೞঋ ݒ۽٘द݃நदসؘदب ܻࣗझসؘदઁযоݒਬ۽ 4FSWJDF8PSLFS
ߡ٘ӝ߈
ܻח৵18"ܳोחо 4UBMF8IJMF3FWBMJEBUF
ܻח৵18"ܳोחо 18"நदחযڌѱزೞחо நदܳসؘೞӝਤ೧ࢲח ਃೡٸߡ٘ܳ߄Բӝ݅ೞݶؽ ਬോदрਸഝਊೠܻࣗझসؘ ֎ਕ߽ݾਵ۽ੋೠו۰ߊࢤೞঋ ݒ۽٘द݃நदসؘदب ܻࣗझসؘदઁযоݒਬ۽ 4FSWJDF8PSLFS
ߡ٘ӝ߈
ܻח৵18"ܳोחо 18"நदחযڌѱزೞחо நदܳসؘೞӝਤ೧ࢲח ਃೡٸߡ٘ܳ߄Բӝ݅ೞݶؽ ਬോदрਸഝਊೠܻࣗझসؘ ֎ਕ߽ݾਵ۽ੋೠו۰ߊࢤೞঋ ݒ۽٘द݃நदসؘदب ܻࣗझসؘदઁযоݒਬ۽ 4FSWJDF8PSLFS
ߡ٘ӝ߈
ܻח৵18"ܳोחо ܻࣗझসؘदਬ۽ݶࢲب ֎ਕ߽ݾহחҙܻоמೠநदܳਤ೧ 18"நदܳࢶఖ
18"ۆ 18"ীࢲਗೞחநद ܻநद 1SF$BDIF ۄநद 3PVUF$BDIF ࢶDBDIFറMPBE ࢶMPBEറDBDIF ۽٘ೞחܻࣗझੌۄب ۽٬ࣘبоݒࡅܴ
ױ ୡӝজप೯द ࣘبо࢚ਵ۽ו۰ࣻ ۽٘ೞחܻࣗझח ܻநदࠁࣘبоוܿ ױ ୡӝজप೯द ࢿמೞоѢহ
ӒѾҗ #FGPSF ܻࣗझ۽٬өѦܽदр T
ӒѾҗ "GUFS ܻࣗझ۽٬өѦܽदр NT
ӒѾҗ #FGPSF"GUFS T NT ড 7~8ߓ ର!!!
18"ܳऔҊࡅܰѱ݅٘חߑߨ 8PSL#PY۽ষрױೞѱ 18"ਢਸٜ݅ࣻ (PPHMF8PSL#PYۄ࠳۞ܻ 18"ܳऔѱҳഅೡࣻח18"ಁః ױ٘۽ 18"߂18"நदܳҳഅ
18"҃ ࢎդ೮؍উ٘۽٘҃
18"҃ ݾח
ݾח ಕ ಕ যڃജ҃ٚ ಕо֎౭࠳ۢ ࡅܰѱࠁৈ दр ࡅܴ ࡅܴ
18"জߓನҗীࢲ؍ࢎѤٜ
ߣ૩҃tੌ߈ਢҗחܰu
18"҃ t18"ۄӒۗ u tӒېبjҳӖҊjਢפөjੜٜ݅ѷju tӝࠄࣁਵ۽׳ܽu ੌ߈ਢҗחܰ
18"҃ पಁ ੌױ18"ޥঌইࠁӝ۽ೣ t18"ۄӒۗ u tӒېبjҳӖҊjਢפөjੜٜ݅ѷju tӝࠄࣁਵ۽׳ܽu ੌ߈ਢҗחܰ
18"҃ ࠳ۄ࢚ҙহݽٚࢎਊীѱ ੌ߈ਢҗחܰ https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/?hl=ko
18"҃ ࠳ۄ࢚ҙহݽٚࢎਊীѱ য়ۄੋաוܽ֎ਕীࢲبࠗ٘۞ز ੌ߈ਢҗחܰ https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/?hl=ko
18"҃ ࠳ۄ࢚ҙহݽٚࢎਊীѱ য়ۄੋաוܽ֎ਕীࢲبࠗ٘۞ز জۢࢎਊदࠂೠࢸসࠛਃ ੌ߈ਢҗחܰ https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/?hl=ko
18"҃ ࠳ۄ࢚ҙহݽٚࢎਊীѱ য়ۄੋաוܽ֎ਕীࢲبࠗ٘۞ز জۢࢎਊदࠂೠࢸসࠛਃ ֎౭࠳জਸоמ ੌ߈ਢҗחܰ https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/?hl=ko
18"҃ ࠳ۄ࢚ҙহݽٚࢎਊীѱ য়ۄੋաוܽ֎ਕীࢲبࠗ٘۞ز জۢࢎਊदࠂೠࢸসࠛਃ ֎౭࠳জਸоמ ݽٚࢎਊীѱוܽ֎ਕীࢲب ࠗ٘۞زਸઁҕೡࣻҳա ੌ߈ਢҗחܰ https://developers.google.com/web/fundamentals/codelabs/your-first-pwapp/?hl=ko
فߣ૩҃t(JUIVCীࢲસસೞӝu
18"҃ (JUIVCীࢲસસೞӝ t৬জী18"֍ਵݶજѷ֎ tӔؘޖੜޅظࢲউغ؍Ѣ u tҙ۲ܐоয٥оѷ u (JUIVC۽׳ܽu
18"҃ पಁ t৬জী18"֍ਵݶજѷ֎ tӔؘޖੜޅظࢲউغ؍Ѣ u tҙ۲ܐоয٥оѷ u (JUIVC۽׳ܽu (JUIVCীࢲસસೞӝ
18"҃ 18"ܳউ٘۽٘ੌࠗ۽ॄࢎਊೠ҃ח٘ޛ पಁ (JUIVCীࢲસસೞӝ t৬জী18"֍ਵݶજѷ֎ tӔؘޖੜޅظࢲউغ؍Ѣ u tҙ۲ܐоয٥оѷ u
(JUIVC۽׳ܽu
18"҃ न18"8SBQQFS۽ ҳഅೠѪ (JUIVCীࢲસસೞӝ
18"҃ ޤоର न18"8SBQQFS۽ ҳഅೠѪ (JUIVCীࢲસસೞӝ
18"҃ 8FC7JFXநयߑधର ޤоର न18"8SBQQFS۽ ҳഅೠѪ (JUIVCীࢲસસೞӝ
18"҃ -0"%@$"$)&@&-4&@/&5803, -0"%@$"$)&@0/-: -0"%@%&'"6-5 -0"%@/0@$"$)& 6TFDBDIFESFTPVSDFTXIFOUIFZBSFBWBJMBCMF FWFOJGUIFZIBWFFYQJSFE %POUVTFUIFOFUXPSL MPBEGSPNUIFDBDIF
%FGBVMUDBDIFVTBHFNPEF %POUVTFUIFDBDIF MPBEGSPNUIFOFUXPSL (JUIVCীࢲસસೞӝ ޙઁ8FC7JFX$BDIFࢸ
ޙઁ8FC7JFX$BDIFߑधࢸ 18"ܳਤ೧ࢲח நद৬֎ਕܳࢎਊೞחࢸਸࢎਊ೮যঠ೮ -0"%@$"$)&@&-4&@/&5803, -0"%@$"$)&@0/-: -0"%@/0@$"$)& 6TFDBDIFESFTPVSDFTXIFOUIFZBSFBWBJMBCMF FWFOJGUIFZIBWFFYQJSFE %POUVTFUIFOFUXPSL MPBEGSPNUIFDBDIF
%POUVTFUIFDBDIF MPBEGSPNUIFOFUXPSL 18"҃ (JUIVCীࢲસસೞӝ -0"%@%&'"6-5 %FGBVMUDBDIFVTBHFNPEF
ࣁߣ૩҃tઁٚநदࢎਊೞӝu
18"҃ ઁٚநदࢎਊೞӝ tয়য়நयߑधࢸਸ߄Բפөػu tӔؘޥо࢚ೠؘ u tفߣ૩ಕࠗఠࡅܰѱڰ֎ u
दೠߣ࢚ӝೞחݾח ಕ ಕ दр ࡅܴ ࡅܴ ಕо֎౭࠳ۢ ࡅܰѱࠁৈ 18"҃
ઁٚநदࢎਊೞӝ
पಁ 18"҃ ઁٚநदࢎਊೞӝ tয়য়நयߑधࢸਸ߄Բפөػu tӔؘޥо࢚ೠؘ u tفߣ૩ಕࠗఠࡅܰѱڰ֎ u
पಁ ۚੋநयߑधਸࢎਊೡਃо 18"҃ ઁٚநएࢎਊೞӝ tয়য়நयߑधࢸਸ߄Բפөػu tӔؘޥо࢚ೠؘ u tفߣ૩ಕࠗఠࡅܰѱڰ֎ u
ӝ അप A A A A ಕо ী۽٬ೠࠗఠ۽٬হ ࡅܰѱڲ दр
दр וܿ ࡅܴ ࡅܴ ࡅܴ ಕо֎౭࠳ۢ ࡅܰѱࠁৈ 18"҃ ઁٚநएࢎਊೞӝ
וܿ ࡅܴ ࢜۽ ߉ই১ நद 18"҃ ઁٚநएࢎਊೞӝ
וܿ ࡅܴ நद 18"҃ ઁٚநएࢎਊೞӝ
18"҃ וܿ ࡅܴ ࠗఠࡅܰѱڰѱ೧۰ݶযڌѱ೧ঠೞ ઁٚநएࢎਊೞӝ
18"҃ ࡅܴ ࡅܴ খীࢲநयೞҊӒѦਊೞ ઁٚநएࢎਊೞӝ
18"҃ ࡅܴ ࡅܴ ۄ நद ܻ நद ઁٚநएࢎਊೞӝ
18"҃ A ۞ೠ நय ߑध ؋࠙ী ৈ۞ ಕۄب ࡅܰѱ
ڸযח Ѫ оמ! B C ઁٚநएࢎਊೞӝ
֎ߣ૩҃t߹بநदҙܻসu
18"҃ tநदоসؘغঋਵݶয u tӒېبநदܳઁೡࣻѱՔٜ݅ݶજਸѪэؘu tநदઁח࢚҃8FC7JFXDMFBS$BDIF j ۽উؼѪэؘ u ߹بநएҙܻস
18"҃ ઁоউؽ ߹بநएҙܻস tநदоসؘغঋਵݶয u tӒېبநदܳઁೡࣻѱՔٜ݅ݶજਸѪэؘu tநदઁח࢚҃8FC7JFXDMFBS$BDIF j ۽উؼѪэؘ
u
18"҃ েjநदߑधࢸਢ࠭ٮۄоݶࢲਢ࠭ݫࣗ٘ח৵উغ ߹بநएҙܻস ઁоউؽ tநदоসؘغঋਵݶয u tӒېبநदܳઁೡࣻѱՔٜ݅ݶજਸѪэؘu tநदઁח࢚҃8FC7JFXDMFBS$BDIF
j ۽উؼѪэؘ u
18"҃ েjநदߑधࢸਢ࠭ٮۄоݶࢲਢ࠭ݫࣗ٘ח৵উغ நदীೠ࠙ࢳਃ೮ ߹بநएҙܻস ઁоউؽ tநदоসؘغঋਵݶয u tӒېبநदܳઁೡࣻѱՔٜ݅ݶજਸѪэؘu
tநदઁח࢚҃8FC7JFXDMFBS$BDIF j ۽উؼѪэؘ u
18"҃ 8FC7JFX WebView WebKit Chrome Network Stack ߹بநएҙܻস
18"҃ 8FC7JFX WebView WebKit Chrome Network Stack Ӓ۰ח ాनೞח
ਢ࠭ ߹بநएҙܻস
18"҃ 8FC7JFX WebView WebKit Chrome Network Stack .FNPSZ$BDIF %JTL$BDIF
$PACKAGE_DIRECTORY/cache/org.chromium.android_webview ߹بநएҙܻস
18"҃ WebView WebKit Chrome Network Stack .FNPSZ$BDIF Service Worker
%JTL$BDIF $PACKAGE_DIRECTORY/cache/org.chromium.android_webview 4FSWJDF8PSLFS$BDIF 8FC7JFX 18" 4FSWJDF8PSLFS $PACKAGE_DIRECTORY/app_webview/Service Worker/CacheStorage ߹بநएҙܻস
18"҃ WebView WebKit Chrome Network Stack .FNPSZ$BDIF Service Worker
%JTL$BDIF $PACKAGE_DIRECTORY/cache/org.chromium.android_webview 4FSWJDF8PSLFS$BDIF $PACKAGE_DIRECTORY/app_webview/Service Worker/CacheStorage पઁ WebView.clearCache(…) ழߡܻ 8FC7JFX 18" 4FSWJDF8PSLFS ߹بநएҙܻস
18"҃ WebView WebKit Chrome Network Stack .FNPSZ$BDIF Service Worker
%JTL$BDIF $PACKAGE_DIRECTORY/cache/org.chromium.android_webview 4FSWJDF8PSLFS$BDIF $PACKAGE_DIRECTORY/app_webview/Service Worker/CacheStorage 18"நदઁܳਤ೧ࢶ ߹بসਃ पઁ WebView.clearCache(…) ழߡܻ 8FC7JFX 18" 4FSWJDF8PSLFS ߹بநएҙܻস
18"҃ 18"4FSWJDF8PSLFS$BDIFઁ private void removeServiceWorkerCache() { File cacheStorage =
new File(getCacheDir() + "/../app_webview/Service Worker/CacheStorage"); clearFolder(cacheStorage); } private void clearFolder(File folder) { if (folder != null) { if (folder.isDirectory()) { File files[] = folder.listFiles(); if (files != null) { for (int i = 0; i < files.length; i++) { if (files[i].delete()) { GlobalUtil.debug("app_serviceworker", files[i].getName() + “ ઁ ࢿҕ!”); } else { GlobalUtil.debug("app_serviceworker", files[i].getName() + " ઁ पಁ ƕƕ"); } } } } } } ߹بநएҙܻস
ࢽߣ૩҃tੜزೞחഛੋೞӝu
18"҃ tੜجইоחѪэؘju tে u tࢲ࠺झਕழநदоੜزೞחযڌѱঌ u ੜزೞחഛੋೞӝ
18"҃ 8FC7JFXਗѺ٣ߡӦ tੜجইоחѪэؘju tে u tࢲ࠺झਕழநदоੜزೞחযڌѱঌ u ੜزೞחഛੋೞӝ
%FCVHHFS ਢ࠭ীࢲࠁחಕܳ٣ߡӦೡࣻҊ ܻࣗझоযוࣗझীࢲৡѤഛੋоמ WebView.setWebContentsDebuggingEnabled(true);
۞ೠੌ۲ٜ҃ਸѻҊ
ಕ ಕ दр ࡅܴ ࡅܴ நएҙܻب ػ ѾҴࢿҕ ಕо֎౭࠳ۢ ࡅܰѱࠁৈ
ҕࣻহ
ࢸറप೯ וܽੋఠ֔ /FUXPSL5ZQF &%(& ਊ ਊറ
ਊറ ਊ ࢸറप೯ ؊וܽੋఠ֔ /FUXPSL5ZQF (4.
18"ী೧ۧѱוԕणפ
18"৬ೞ࠳ܻ٘জীࢲח 1SPT ࣘبоѐࢶؽ நदҙܻоמ ӝઓೞ࠳ܻ٘ਢ࠭ীҕࣻহਊоמ $POT
J04ਢ࠭ীࢲח4FSWJDF8PSLFSܳਗೞঋ ইܐо݆ঋ
Ѿۿ ೠػदр ੋܻࣗझ જࢎਊ҃ࢶ ӓੋਢ࠭بੑ 18"ب જࢶఖؼࣻ
5)"/,4 ߅ࢳ ޖо҅ࣘߓҊरউ٘۽٘ѐߊ ਬ ࢜۽Ѧदب೧ࠁҊरਢѐߊ !NJOTFPLLS !UJOZKJO JBNNJOTFPLQBSL!HNBJMDPN CBSBN!HNBJMDPN
IUUQTXMTENMCMPHNF IUUQTNJOTFPLLSHJUIVCJP