Narzędziownik
czyli co każdy programista
Androida znać powinien
+Wojtek Kaliciński+Wojtek Kaliciński
Najczęstsze problemy
Najczęstsze problemy
Wolno działa
Zacina się interfejs
Zżera całą pamięć
Rozładowuje baterię
ANR
Najczęstsze problemy
Wolno działa
Zacina się interfejs
Zżera całą pamięć
Rozładowuje baterię
ANR
CPU
GPU
RAM
Serwisy w tle...
Systrace
Systrace
Systrace
Systrace
TraceView
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Debug.startMetho...
TraceView
TraceView
HierarchyViewer https://github.com/romainguy/ViewServer/
public class MyActivity extends Activity {
public void onCreate(B...
HierarchyViewer
HierarchyViewer
Tracer for OpenGL ES
Tracer for OpenGL ES
Tracer for OpenGL ES
Tracer for OpenGL ES
Developer options > Debug GPU overdraw
Developer options > Debug GPU overdraw
Developer options > Debug GPU overdraw
Allocation Tracker
StrictMode
public void onCreate() {
if (DEVELOPER_MODE ) {
StrictMode.setThreadPolicy( new StrictMode.ThreadPolicy.Builder...
$ adb shell dumpsys meminfo com.package
** MEMINFO in pid 9292 [pl.przepisy] **
Pss Private Private Swapped Heap Heap Heap...
$ adb shell dumpsys procstats com.package
[...]
* pl.przepisy / u0a85:
* pl.przepisy / u0a85:
TOTAL: 31% ( 39MB-47MB-87MB/...
Developer options > Process Stats
Chrome remote debugging
WebView remote debugging (4.4+)
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
if ( 0 != ( getApplcationInfo()....
Dziękuję!
Q&A?
google.com/+Wojtek Kaliciński
TARGI MOBILNE, DZIEN I, SALA A, Narzędziownik programisty Android, Wojciech Kaliciński, We like caps!
TARGI MOBILNE, DZIEN I, SALA A, Narzędziownik programisty Android, Wojciech Kaliciński, We like caps!
TARGI MOBILNE, DZIEN I, SALA A, Narzędziownik programisty Android, Wojciech Kaliciński, We like caps!
TARGI MOBILNE, DZIEN I, SALA A, Narzędziownik programisty Android, Wojciech Kaliciński, We like caps!
Upcoming SlideShare
Loading in …5
×

TARGI MOBILNE, DZIEN I, SALA A, Narzędziownik programisty Android, Wojciech Kaliciński, We like caps!

589 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
589
On SlideShare
0
From Embeds
0
Number of Embeds
72
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

TARGI MOBILNE, DZIEN I, SALA A, Narzędziownik programisty Android, Wojciech Kaliciński, We like caps!

  1. 1. Narzędziownik czyli co każdy programista Androida znać powinien
  2. 2. +Wojtek Kaliciński+Wojtek Kaliciński
  3. 3. Najczęstsze problemy
  4. 4. Najczęstsze problemy Wolno działa Zacina się interfejs Zżera całą pamięć Rozładowuje baterię ANR
  5. 5. Najczęstsze problemy Wolno działa Zacina się interfejs Zżera całą pamięć Rozładowuje baterię ANR CPU GPU RAM Serwisy w tle Wątek UI
  6. 6. Systrace
  7. 7. Systrace
  8. 8. Systrace
  9. 9. Systrace
  10. 10. TraceView @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Debug.startMethodTracing(); } @Override public void onStop() { super.onStop(); Debug.stopMethodTracing(); }
  11. 11. TraceView
  12. 12. TraceView
  13. 13. HierarchyViewer https://github.com/romainguy/ViewServer/ public class MyActivity extends Activity { public void onCreate(Bundle savedInstanceState ) { super.onCreate(savedInstanceState); // Set content view, etc. ViewServer.get(this).addWindow(this); } public void onDestroy() { super.onDestroy(); ViewServer.get(this).removeWindow(this); } public void onResume() { super.onResume(); ViewServer.get(this).setFocusedWindow(this); } }
  14. 14. HierarchyViewer
  15. 15. HierarchyViewer
  16. 16. Tracer for OpenGL ES
  17. 17. Tracer for OpenGL ES
  18. 18. Tracer for OpenGL ES
  19. 19. Tracer for OpenGL ES
  20. 20. Developer options > Debug GPU overdraw
  21. 21. Developer options > Debug GPU overdraw
  22. 22. Developer options > Debug GPU overdraw
  23. 23. Allocation Tracker
  24. 24. StrictMode public void onCreate() { if (DEVELOPER_MODE ) { StrictMode.setThreadPolicy( new StrictMode.ThreadPolicy.Builder() .detectDiskReads() .detectDiskWrites() .detectNetwork() .penaltyLog() // or .penaltyDeath() .build()); } super.onCreate(); }
  25. 25. $ adb shell dumpsys meminfo com.package ** MEMINFO in pid 9292 [pl.przepisy] ** Pss Private Private Swapped Heap Heap Heap Total Dirty Clean Dirty Size Alloc Free ------ ------ ------ ------ ------ ------ ------ Native Heap 9382 9356 0 0 16844 14427 148 Dalvik Heap 7963 7420 0 0 15564 15524 40 Dalvik Other 2076 1916 0 0 [...] Graphics 17696 17696 0 0 [...] TOTAL 48947 42776 2088 0 32408 29951 188 Objects Views: 100 ViewRootImpl: 2 AppContexts: 5 Activities: 1 Assets: 2 AssetManagers: 2 Local Binders: 15 Proxy Binders: 24 Death Recipients: 0 OpenSSL Sockets: 1
  26. 26. $ adb shell dumpsys procstats com.package [...] * pl.przepisy / u0a85: * pl.przepisy / u0a85: TOTAL: 31% ( 39MB-47MB-87MB/36MB-43MB-72MB over 22) Top: 31% ( 39MB-47MB-87MB/36MB-43MB-72MB over 22) (Cached): 3.3% (45MB-56MB-67MB/40MB-48MB-56MB over 2) * pl.przepisy.RequestService: Process: pl.przepisy Running count 12 / time 0.49% Started count 6 / time 0.48% Executing count 13 / time 0.02%
  27. 27. Developer options > Process Stats
  28. 28. Chrome remote debugging
  29. 29. WebView remote debugging (4.4+) if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { if ( 0 != ( getApplcationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE ) ) { WebView.setWebContentsDebuggingEnabled(true); } }
  30. 30. Dziękuję! Q&A? google.com/+Wojtek Kaliciński

×