SlideShare a Scribd company logo
Android Performance Tips & Tricks
Sergii Zhuk
Android Developer at DAXX BV
Kyiv, FrameworksDays Android Saturday, 2015-06-06 1
Agenda
• Effective Java in Android
• Layouts and UI
• Proper Use of Resources
• Dev Tools and Measuring Performance
2
Effective Java in Android
• Avoid using Floating-Point
• Prefer primitives and primitive-backed data
structures (ArrayMap, SparseArray)
• Two parallel (int) arrays are better than array
(int,int)
3
Effective Java in Android
• System.arraycopy() is about 9x faster than a
hand-coded loop
• Make your method static: invocations will be
about 15%-20% faster
• Do not use Enums
WAT??
 @IntDef annotation
4
Supplying Scaled Drawables
• Why not to supply a single xhdpi image as blurred
background for the screen?
• Rendering performance will decrease because
device should scale your image during app
execution
• Such operation requires extra memory for Bitmap
native processing, potential source of
OutOfMemoryError
5
Make Your Layouts Flat
• Inflating layout is a top-down traversal of the
view tree
• Hierarchy Viewer (Android SDK) allows to
analyze layout while your application is
running
6
“Heavy” ViewGroups
• RelativeLayout requires two measurement passes to
ensure that it has handled all of the layout relationships
• The same is valid for LinearLayout with layout weights
• If one of the children of ViewGroups shown above is again
RelativeLayout or LinearLayout with weights – four
measurements passes will be required for sub-hierarchy
• GridLayout could be good solution in some cases (API 14+)
7
GridLayout example
8
Splash Screen Effect
• Show a blank window constructed with the
application theme, including specified
background drawable while application is
starting
• Behavior is provided by OS
9
Splash Screen Effect
10
ViewStub
• A lightweight view with no dimension and
doesn’t draw anything or participate in the
layout
• Use ViewStub as a “lazy include” for sub-
hierarchies that can be optionally inflated
later.
11
Develop for the Low End
• Devices distribution in the world
• Most of users could have lower-end devices
than yours
• Use ActivityManager.isLowRamDevice() to
detect if device in the class of a 512MB RAM
and/or about a 800x480 screen [API 19+]
12
13
Develop for the Low End
* More details at my Stackoverflow.com question
Nexus 4 (Genymotion emu)
and other devices
Lenovo P780 with Android 4.2.1
Remove unused resources
• Lint (Android SDK): will highlight these resources
• Android-resource-remover (consumes Lint
output)
• Gradle:
14
buildTypes {
release {
minifyEnabled true
shrinkResources true
}
}
Multiple APKs on Play Store
• Different APKs for your app that are each
targeted to different device configurations
• Have same app listing on Google Play and must
share the same package name and be signed with
the same release key
• Recommended to use multiple APKs only when
your APK is too large (> 50MB)
15
Gradle Plugin: APK splits
android {
...
splits {
density {
enable true
reset()
exclude "ldpi", "tvdpi", "xxxhdpi"
}
}
16
WARN: you will need to set different version code for each APK file
Developer Options On Your Device
17
Developer Options On Your Device
18
Avoid Requesting a Large Heap
• Requesting a larger heap may be necessary in
some rare situations like media content
• android:largeHeap=“true” result: less memory
to be available for other apps, necessitating
them being killed and restarted
• android:largeHeap seems to be not enough
documented
19
Memory Leaks
• If a chain of references holds an object in
memory after the end of its expected lifetime
• Old approach:
Dump  Fix header  MAT  Find leak
• New approach: LeakCanary will notify you
20
LeakCanary
21
dependencies {
debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1'
releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1'
}
public class ExampleApplication extends Application {
@Override public void onCreate() {
super.onCreate();
LeakCanary.install(this);
}
}
LeakCanary
22
* Sometimes you still need MAT
In-app performance check
• StrictMode
• Google’s profiling tools: Traceview &
dmtracedump
• Hugo by Jake Wharton
• Tools like NewRelic to show bottlenecks in
response time
23
References
• http://developer.android.com/training/articles/perf-tips.html
• Chet Haase at Medium: Developing for Android (parts 1-5)
• Memory leaks in Android (in Russian)
• Android Performance Case Study by Romain Guy
• Is Android layout really exponentially hard? SO discussion
• Pro Android Apps Performance Optimization by Herv Guihot
• Eric Lafortune talk on MCE2015 Conference
• Cyril Mottier blog
• Taylor Ling blog
• Romain Guy blog
• Android Performance Patterns (YouTube and G+)
• DOU.ua Android Digest 
24
Thank you!
@sergiizhuk
sergey.public@gmail.com
http://ua.linkedin.com/in/sergiizhuk
25

More Related Content

Viewers also liked (20)

PDF
Алексей Волков "Интерактивные декларативные графики на React+D3"
Fwdays
 
PPT
"Spring Boot. Boot up your development" Сергей Моренец
Fwdays
 
PDF
Евгений Обрезков "Behind the terminal"
Fwdays
 
PDF
Fighting Fat Models (Богдан Гусев)
Fwdays
 
PDF
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
Fwdays
 
PPTX
"Query Execution: Expectation - Reality (Level 300)" Денис Резник
Fwdays
 
PDF
Илья Прукко: "Как дизайнеру не становиться художником"
Fwdays
 
PDF
"Frameworks in 2015" Андрей Листочкин
Fwdays
 
PDF
Светлана Старикова "Building a self-managing team: why you should not have e...
Fwdays
 
PDF
Lightweight APIs in mRuby (Михаил Бортник)
Fwdays
 
PDF
Анатолий Попель: "Формы оплаты и платёжные шлюзы"
Fwdays
 
PDF
Александр Воронов | Building CLI with Swift
Fwdays
 
PDF
Скрам и Канбан: применимость самых распространенных методов организации умств...
Fwdays
 
PDF
Michael North "The Road to Native Web Components"
Fwdays
 
PDF
Designing for Privacy
exultantwarning51
 
PDF
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
Fwdays
 
PPTX
Трансформация команды: от инди разработки к играм с коммерческой успешностью
Fwdays
 
PDF
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
Fwdays
 
PDF
4 puchnina.pptx
Fwdays
 
PPTX
"Красная книга веб-разработчика" Виктор Полищук
Fwdays
 
Алексей Волков "Интерактивные декларативные графики на React+D3"
Fwdays
 
"Spring Boot. Boot up your development" Сергей Моренец
Fwdays
 
Евгений Обрезков "Behind the terminal"
Fwdays
 
Fighting Fat Models (Богдан Гусев)
Fwdays
 
Алексей Рыбаков: "Wearable OS год спустя: Apple Watch 2.0, Android Wear 5.1.1...
Fwdays
 
"Query Execution: Expectation - Reality (Level 300)" Денис Резник
Fwdays
 
Илья Прукко: "Как дизайнеру не становиться художником"
Fwdays
 
"Frameworks in 2015" Андрей Листочкин
Fwdays
 
Светлана Старикова "Building a self-managing team: why you should not have e...
Fwdays
 
Lightweight APIs in mRuby (Михаил Бортник)
Fwdays
 
Анатолий Попель: "Формы оплаты и платёжные шлюзы"
Fwdays
 
Александр Воронов | Building CLI with Swift
Fwdays
 
Скрам и Канбан: применимость самых распространенных методов организации умств...
Fwdays
 
Michael North "The Road to Native Web Components"
Fwdays
 
Designing for Privacy
exultantwarning51
 
Анастасия Войтова: "Building profanity filters on mobile: clbuttic sh!t"
Fwdays
 
Трансформация команды: от инди разработки к играм с коммерческой успешностью
Fwdays
 
Сергей Яковлев "Phalcon 2 - стабилизация и производительность"
Fwdays
 
4 puchnina.pptx
Fwdays
 
"Красная книга веб-разработчика" Виктор Полищук
Fwdays
 

Similar to Сергей Жук "Android Performance Tips & Tricks" (20)

PDF
Profiling tools and Android Performance patterns
icemobile
 
PPTX
Android app performance
Saksham Keshri
 
PDF
Android development first steps
christoforosnalmpantis
 
PPTX
Android Performance Best Practices
Amgad Muhammad
 
PDF
Android UI Development: Tips, Tricks, and Techniques
Edgar Gonzalez
 
PDF
Android UI Tips, Tricks and Techniques
Marakana Inc.
 
PPTX
[충격] 당신의 안드로이드 앱이 느린 이유가 있다??!
Wooseop Kim
 
PPTX
Optimisation and performance in Android
Rakesh Jha
 
PDF
Android, the life of your app
Eyal Lezmy
 
PDF
Beating Android Fragmentation, Brett Duncavage
Xamarin
 
PPT
Part 2 android application development 101
Michael Angelo Rivera
 
PDF
10 ways to improve your Android app performance
Boris Farber
 
PDF
Android dev tips
Kanda Runapongsa Saikaew
 
PDF
Beating Android Fragmentation
Juan Gomez
 
PDF
Sidiq Permana - Building For The Next Billion Users
Dicoding
 
PPTX
How to create Great App
Yonatan Levin
 
PPTX
Technology and Android.pptx
muthulakshmi cse
 
PDF
The Good, the Bad and the Ugly things to do with android
Stanojko Markovik
 
PDF
Android development - the basics, MFF UK, 2014
Tomáš Kypta
 
PDF
Android development - the basics, MFF UK, 2012
Tomáš Kypta
 
Profiling tools and Android Performance patterns
icemobile
 
Android app performance
Saksham Keshri
 
Android development first steps
christoforosnalmpantis
 
Android Performance Best Practices
Amgad Muhammad
 
Android UI Development: Tips, Tricks, and Techniques
Edgar Gonzalez
 
Android UI Tips, Tricks and Techniques
Marakana Inc.
 
[충격] 당신의 안드로이드 앱이 느린 이유가 있다??!
Wooseop Kim
 
Optimisation and performance in Android
Rakesh Jha
 
Android, the life of your app
Eyal Lezmy
 
Beating Android Fragmentation, Brett Duncavage
Xamarin
 
Part 2 android application development 101
Michael Angelo Rivera
 
10 ways to improve your Android app performance
Boris Farber
 
Android dev tips
Kanda Runapongsa Saikaew
 
Beating Android Fragmentation
Juan Gomez
 
Sidiq Permana - Building For The Next Billion Users
Dicoding
 
How to create Great App
Yonatan Levin
 
Technology and Android.pptx
muthulakshmi cse
 
The Good, the Bad and the Ugly things to do with android
Stanojko Markovik
 
Android development - the basics, MFF UK, 2014
Tomáš Kypta
 
Android development - the basics, MFF UK, 2012
Tomáš Kypta
 
Ad

More from Fwdays (20)

PDF
"Mastering UI Complexity: State Machines and Reactive Patterns at Grammarly",...
Fwdays
 
PDF
"Effect, Fiber & Schema: tactical and technical characteristics of Effect.ts"...
Fwdays
 
PPTX
"Computer Use Agents: From SFT to Classic RL", Maksym Shamrai
Fwdays
 
PPTX
"Як ми переписали Сільпо на Angular", Євген Русаков
Fwdays
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
"Validation and Observability of AI Agents", Oleksandr Denisyuk
Fwdays
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PPTX
"Co-Authoring with a Machine: What I Learned from Writing a Book on Generativ...
Fwdays
 
PPTX
"Human-AI Collaboration Models for Better Decisions, Faster Workflows, and Cr...
Fwdays
 
PDF
"AI is already here. What will happen to your team (and your role) tomorrow?"...
Fwdays
 
PPTX
"Is it worth investing in AI in 2025?", Alexander Sharko
Fwdays
 
PDF
''Taming Explosive Growth: Building Resilience in a Hyper-Scaled Financial Pl...
Fwdays
 
PDF
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
PDF
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
PDF
"Scaling in space and time with Temporal", Andriy Lupa .pdf
Fwdays
 
PPTX
"Provisioning via DOT-Chain: from catering to drone marketplaces", Volodymyr ...
Fwdays
 
PPTX
" Observability with Elasticsearch: Best Practices for High-Load Platform", A...
Fwdays
 
PPTX
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
PPTX
"Istio Ambient Mesh in production: our way from Sidecar to Sidecar-less",Hlib...
Fwdays
 
"Mastering UI Complexity: State Machines and Reactive Patterns at Grammarly",...
Fwdays
 
"Effect, Fiber & Schema: tactical and technical characteristics of Effect.ts"...
Fwdays
 
"Computer Use Agents: From SFT to Classic RL", Maksym Shamrai
Fwdays
 
"Як ми переписали Сільпо на Angular", Євген Русаков
Fwdays
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
"Validation and Observability of AI Agents", Oleksandr Denisyuk
Fwdays
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
"Co-Authoring with a Machine: What I Learned from Writing a Book on Generativ...
Fwdays
 
"Human-AI Collaboration Models for Better Decisions, Faster Workflows, and Cr...
Fwdays
 
"AI is already here. What will happen to your team (and your role) tomorrow?"...
Fwdays
 
"Is it worth investing in AI in 2025?", Alexander Sharko
Fwdays
 
''Taming Explosive Growth: Building Resilience in a Hyper-Scaled Financial Pl...
Fwdays
 
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
"Database isolation: how we deal with hundreds of direct connections to the d...
Fwdays
 
"Scaling in space and time with Temporal", Andriy Lupa .pdf
Fwdays
 
"Provisioning via DOT-Chain: from catering to drone marketplaces", Volodymyr ...
Fwdays
 
" Observability with Elasticsearch: Best Practices for High-Load Platform", A...
Fwdays
 
"How to survive Black Friday: preparing e-commerce for a peak season", Yurii ...
Fwdays
 
"Istio Ambient Mesh in production: our way from Sidecar to Sidecar-less",Hlib...
Fwdays
 
Ad

Recently uploaded (20)

PPTX
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
Python basic programing language for automation
DanialHabibi2
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
July Patch Tuesday
Ivanti
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PPTX
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
MSP360 Backup Scheduling and Retention Best Practices.pptx
MSP360
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Python basic programing language for automation
DanialHabibi2
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
July Patch Tuesday
Ivanti
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
SWEBOK Guide and Software Services Engineering Education
Hironori Washizaki
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Building Search Using OpenSearch: Limitations and Workarounds
Sease
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 

Сергей Жук "Android Performance Tips & Tricks"

  • 1. Android Performance Tips & Tricks Sergii Zhuk Android Developer at DAXX BV Kyiv, FrameworksDays Android Saturday, 2015-06-06 1
  • 2. Agenda • Effective Java in Android • Layouts and UI • Proper Use of Resources • Dev Tools and Measuring Performance 2
  • 3. Effective Java in Android • Avoid using Floating-Point • Prefer primitives and primitive-backed data structures (ArrayMap, SparseArray) • Two parallel (int) arrays are better than array (int,int) 3
  • 4. Effective Java in Android • System.arraycopy() is about 9x faster than a hand-coded loop • Make your method static: invocations will be about 15%-20% faster • Do not use Enums WAT??  @IntDef annotation 4
  • 5. Supplying Scaled Drawables • Why not to supply a single xhdpi image as blurred background for the screen? • Rendering performance will decrease because device should scale your image during app execution • Such operation requires extra memory for Bitmap native processing, potential source of OutOfMemoryError 5
  • 6. Make Your Layouts Flat • Inflating layout is a top-down traversal of the view tree • Hierarchy Viewer (Android SDK) allows to analyze layout while your application is running 6
  • 7. “Heavy” ViewGroups • RelativeLayout requires two measurement passes to ensure that it has handled all of the layout relationships • The same is valid for LinearLayout with layout weights • If one of the children of ViewGroups shown above is again RelativeLayout or LinearLayout with weights – four measurements passes will be required for sub-hierarchy • GridLayout could be good solution in some cases (API 14+) 7
  • 9. Splash Screen Effect • Show a blank window constructed with the application theme, including specified background drawable while application is starting • Behavior is provided by OS 9
  • 11. ViewStub • A lightweight view with no dimension and doesn’t draw anything or participate in the layout • Use ViewStub as a “lazy include” for sub- hierarchies that can be optionally inflated later. 11
  • 12. Develop for the Low End • Devices distribution in the world • Most of users could have lower-end devices than yours • Use ActivityManager.isLowRamDevice() to detect if device in the class of a 512MB RAM and/or about a 800x480 screen [API 19+] 12
  • 13. 13 Develop for the Low End * More details at my Stackoverflow.com question Nexus 4 (Genymotion emu) and other devices Lenovo P780 with Android 4.2.1
  • 14. Remove unused resources • Lint (Android SDK): will highlight these resources • Android-resource-remover (consumes Lint output) • Gradle: 14 buildTypes { release { minifyEnabled true shrinkResources true } }
  • 15. Multiple APKs on Play Store • Different APKs for your app that are each targeted to different device configurations • Have same app listing on Google Play and must share the same package name and be signed with the same release key • Recommended to use multiple APKs only when your APK is too large (> 50MB) 15
  • 16. Gradle Plugin: APK splits android { ... splits { density { enable true reset() exclude "ldpi", "tvdpi", "xxxhdpi" } } 16 WARN: you will need to set different version code for each APK file
  • 17. Developer Options On Your Device 17
  • 18. Developer Options On Your Device 18
  • 19. Avoid Requesting a Large Heap • Requesting a larger heap may be necessary in some rare situations like media content • android:largeHeap=“true” result: less memory to be available for other apps, necessitating them being killed and restarted • android:largeHeap seems to be not enough documented 19
  • 20. Memory Leaks • If a chain of references holds an object in memory after the end of its expected lifetime • Old approach: Dump  Fix header  MAT  Find leak • New approach: LeakCanary will notify you 20
  • 21. LeakCanary 21 dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.3.1' releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.3.1' } public class ExampleApplication extends Application { @Override public void onCreate() { super.onCreate(); LeakCanary.install(this); } }
  • 23. In-app performance check • StrictMode • Google’s profiling tools: Traceview & dmtracedump • Hugo by Jake Wharton • Tools like NewRelic to show bottlenecks in response time 23
  • 24. References • http://developer.android.com/training/articles/perf-tips.html • Chet Haase at Medium: Developing for Android (parts 1-5) • Memory leaks in Android (in Russian) • Android Performance Case Study by Romain Guy • Is Android layout really exponentially hard? SO discussion • Pro Android Apps Performance Optimization by Herv Guihot • Eric Lafortune talk on MCE2015 Conference • Cyril Mottier blog • Taylor Ling blog • Romain Guy blog • Android Performance Patterns (YouTube and G+) • DOU.ua Android Digest  24

Editor's Notes

  • #3: Не будем писать код -- Много кода есть у индусов Магии не будет, будет много простого и правильного
  • #4: Каждый объект – как минимум 8 байт + Специфичные реализации Android, где нет лишних методов – но и нет реализации Map
  • #5: ProGuard: в некоторых случаях может привести enum к int
  • #6: Крешили и Core2 и galaxy s3. Может, на маленькой картинке это работает ок и можно забить
  • #7: Отдельный случай – когда работаете с ViewPager – и держите в памяти 3-5 экранов – тогда тормоза заметны и на быстром устройстве
  • #8: Is Android layout really exponentially hard? discussion http://stackoverflow.com/questions/17493819/is-android-layout-really-exponentially-hard Also sometimes on LinearLayouts with weight
  • #10: <style name="AppBaseTheme" parent="android:Theme.Holo.NoActionBar">     <item name="android:windowBackground">@color/red</item> </style>
  • #12: Первое, что приходит в голову, когда нужно показать часть UI позже: сделать View.GONE ViewStub : нет размеров, ничего не рисует When inflate() is invoked, the ViewStub is replaced by the inflated View and the inflated View is returned. This lets applications get a reference to the inflated View without executing an extra findViewById().
  • #13: Весело – это когда заказчик просит приложение как iOS, забывая, что айфоны стоят в разы дороже среднего андроида
  • #14: Ещё – случай со смартфонами Huawei и неправильными лого
  • #16: Дорого, хлопотно Вопрос в том – готов ли ваш заказчик за это платить. Цукерберг хвастался FBLight – меньше 1Мб
  • #20: Есть такой соблазн Якобы понижает вероятность OutOfMemory
  • #22: Встраивается в ваше приложение, инициализируется одной строчкой кода, Подключается в gradle в режимах debugCompile и releaseCompile (пустая)
  • #23: Пьер из команды Square в начале мая релизнул. 3.5К звёзд в гитхабе за месяц Удобно при тестировании приложения – больше не нужно подключать и ручками сливать дампы: удобно для тестировщиков
  • #24: StrictMode to catch accidental disk or network access on the application's main thread, NewRelic: удобно собирает статистику по времени выполнения каждого метода на различных девайсах Не забудьте убрать все свои логи перед выкатом в продакшен.