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
A journey to smaller APK size
Search
Dmytro Khmelenko
July 20, 2018
Programming
130
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
A journey to smaller APK size
Slides for the talk at 360|AnDev conference.
Dmytro Khmelenko
July 20, 2018
More Decks by Dmytro Khmelenko
See All by Dmytro Khmelenko
Securing High-Risk Django Applications: Lessons from the Payment Domain
dkhmelenko
0
37
Securing Python Web Applications
dkhmelenko
0
40
Best of login experience
dkhmelenko
0
120
Best of sign in experience @ Droidcon Lisbon
dkhmelenko
0
130
Red or Green? Let us test
dkhmelenko
0
50
A journey to smaller apk size
dkhmelenko
0
75
How Git helps us with localization
dkhmelenko
0
110
Dagger.Android module
dkhmelenko
0
77
MVVM vs. MVP
dkhmelenko
0
58
Other Decks in Programming
See All in Programming
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
560
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
180
AI 輔助遺留系統現代化的經驗分享
jame2408
1
960
Contextとはなにか
chiroruxx
1
360
AIだと陥りがちなJakarta EE最新技術への移行時の落とし穴と解決策
tnagao7
0
120
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
4
1.6k
エージェンティックRAGにAWSで入門しよう!
har1101
9
1.7k
RTSPクライアントを自作してみた話
simotin13
0
620
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.5k
Signal Forms: Details & Live Coding @enterJS 2026 in Mannheim
manfredsteyer
PRO
0
180
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
180
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
11
6.1k
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
490
Six Lessons from altMBA
skipperchong
29
4.3k
Test your architecture with Archunit
thirion
1
2.3k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.6k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
170
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
270
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
360
Into the Great Unknown - MozCon
thekraken
41
2.6k
Transcript
A JOURNEY TO SMALLER APK SIZE Dmytro Khmelenko Software Engineer
19-20 July 2018
ONCE UPON A TIME… Release APK size is 63 MB
2
ONCE UPON A TIME… Release APK size is 63 MB
3
Analysis 4 EPISODE 1
5 ANALYZE APK
ANALYZE APK 6
The developers strike back 7 EPISODE 2
RESOURCES OPTIMIZATION 8 ✅ Shrink video files (- 10 MB)
9 Overall bit rate : 3 235 kb/s Bits/(Pixel*Frame) :
0.549 Stream size : 4.77 MiB (94%) File size : 5.3 MB Overall bit rate : 735 kb/s Bits/(Pixel*Frame) : 0.108 Stream size : 963 KiB (81%) File size: : 1.2 MB
RESOURCES OPTIMIZATION 10 ✅ Shrink video files (- 10 MB)
✅ Shrink audio files (- 4 MB)
AUDIO FILES 11 Before: Bit rate : 256 kb/s Channel(s)
: 2 channels Sampling rate : 44.1 kHz File size : 56.4 KB After: Bit rate : 32.0 kb/s Channel(s) : 1 channel Sampling rate : 16.0 kHz File size : 13.7 KB
RESOURCES OPTIMIZATION ✅ Shrink video files (- 10 MB) ✅
Shrink audio files (- 4 MB) ✅ Shrink and optimize drawables (- 25 MB) 12
13 525 KB, .png 75 KB, .jpg
DRAWABLES OPTIMIZATION ✅ Remove unused drawables (Lint, ProGuard) ✅ Support
only hdpi, xhdpi and xxhdpi ✅ Use .jpeg, when possible ✅ Use .webp instead of .png 14
DRAWABLES SIZE hdpi ~ 50 KB xhdpi ~ 100 KB
xxhdpi ~ 150 KB 15
Review 16 EPISODE 3
TIME TO REVIEW 17
TIME TO REVIEW 18
LEARNINGS Pay attention to resources Collaborate with designers 19
A new hope 20 EPISODE 4
FURTHER STEPS • Multiple APK split by screen density •
Multiple APK split by CPU architecture • Automatically check size for every new file 21
22
APP BUNDLE 23 { "supportedAbis": ["x86_64", "x86", "armeabi-v7a"], "supportedLocales": ["en-US",
"de-DE"], "screenDensity": 320, "sdkVersion": 24 }
APP BUNDLE 24 hdpi base-en.apk: 52 KB base-master.apk: 12.5 MB
base-hdpi.apk: 2.3 MB
APP BUNDLE 25 base-master.apk
APP BUNDLE 26 base-hdpi.apk
APP BUNDLE 27 hdpi base-en.apk: 52 KB base-master.apk: 12.5 MB
base-hdpi.apk: 2.3 MB xxhdpi base-en.apk: 52KB base-master.apk: 12.5 MB base-xxhdpi.apk: 6.3 MB xhdpi base-en.apk: 52 KB base-master.apk: 12.5 MB base-xhdpi.apk: 3.4 MB
APP BUNDLE 28 hdpi base-en.apk: 52 KB base-master.apk: 12.5 MB
base-hdpi.apk: 2.3 MB xxhdpi base-en.apk: 52KB base-master.apk: 12.5 MB base-xxhdpi.apk: 6.3 MB xhdpi base-en.apk: 52 KB base-master.apk: 12.5 MB base-xhdpi.apk: 3.4 MB
APP BUNDLE 29 hdpi base-en.apk: 52 KB base-master.apk: 12.5 MB
base-hdpi.apk: 2.3 MB xxhdpi base-en.apk: 52KB base-master.apk: 12.5 MB base-xxhdpi.apk: 6.3 MB xhdpi base-en.apk: 52 KB base-master.apk: 12.5 MB base-xhdpi.apk: 3.4 MB 14.9 MB 16.0 MB 18.9 MB
Random data 30 EPISODE 5
31 REGISTRATIONS
The phantom menace 32 EPISODE 6
MEANWHILE 33
WE NEED TO STOP IT 34 bit.ly/2NvSafl
IT WORKS 35
RESOURCES • https://developer.android.com/topic/performance/reduce-apk-size.html • https://developer.android.com/guide/app-bundle • https://medium.com/@d.khmelenko/a-journey-to-a-smaller-apk-78155416f280 • https://medium.com/@d.khmelenko/android-app-bundle-6fd1e55c4c4b 36
THANK YOU! @dkhmelenko