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

34
Narzędziownik czyli co każdy programista Androida znać powinien

description

 

Transcript of TARGI MOBILNE, DZIEN I, SALA A, Narzędziownik programisty Android, Wojciech Kaliciński, We like...

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

Narzędziownikczyli co każdy programista

Androida znać powinien

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

+Wojtek Kaliciński+Wojtek Kaliciński

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

Najczęstsze problemy

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

Najczęstsze problemy

Wolno działa

Zacina się interfejs

Zżera całą pamięć

Rozładowuje baterię

ANR

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

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

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

Systrace

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

Systrace

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

Systrace

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

Systrace

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

TraceView @Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

Debug.startMethodTracing();

}

@Override

public void onStop() {

super.onStop();

Debug.stopMethodTracing();

}

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

TraceView

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

TraceView

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

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);

}

}

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

HierarchyViewer

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

HierarchyViewer

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

Tracer for OpenGL ES

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

Tracer for OpenGL ES

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

Tracer for OpenGL ES

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

Tracer for OpenGL ES

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

Developer options > Debug GPU overdraw

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

Developer options > Debug GPU overdraw

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

Developer options > Debug GPU overdraw

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

Allocation Tracker

Page 24: TARGI MOBILNE, DZIEN I, SALA A, Narzędziownik programisty Android, Wojciech Kaliciński, We like caps!
Page 25: TARGI MOBILNE, DZIEN I, SALA A, Narzędziownik programisty Android, Wojciech Kaliciński, We like caps!
Page 26: TARGI MOBILNE, DZIEN I, SALA A, Narzędziownik programisty Android, Wojciech Kaliciński, We like caps!
Page 27: TARGI MOBILNE, DZIEN I, SALA A, Narzędziownik programisty Android, Wojciech Kaliciński, We like caps!
Page 28: TARGI MOBILNE, DZIEN I, SALA A, Narzędziownik programisty Android, Wojciech Kaliciński, We like caps!

StrictModepublic void onCreate() {

if (DEVELOPER_MODE) {

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()

.detectDiskReads()

.detectDiskWrites()

.detectNetwork()

.penaltyLog() // or .penaltyDeath()

.build());

}

super.onCreate();

}

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

$ 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

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

$ 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%

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

Developer options > Process Stats

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

Chrome remote debugging

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

WebView remote debugging (4.4+)

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {

if ( 0 != ( getApplcationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE ) ) {

WebView.setWebContentsDebuggingEnabled(true);

}

}

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

Dziękuję!Q&A?

google.com/+Wojtek Kaliciński