effective android development. ua mobile 2016

Post on 07-Apr-2017

358 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

EFFECTIV E

ANDROID

DEVELOPMENT

S E R G I I Z H U K

1 6 - 0 4 - 2 0 1 6

2

HELLO!

My name is Sergii Zhuk

• Android Developer @ Zalando SE

• Author of DOU.ua Android Digest

• In Berlin since August 2015

• twitter.com/sergiizhuk

• medium.com/@sergii

3

ZALANDO SE

• Europe’s leading online fashion platform

• ~ 10,000 employees in Europe

• ~ EUR 3bn revenue in 2015

• ~ 60% of shop traffic came from mobile

• 10M+ downloads Android app

4

AGENDA

• Android Studio

• Test Devices

• Dev & Environment

• App Performance

• Gradle Hacks

5

ANDROID STUDIO

6

ANDROID STUDIO – T IP 0

Show line numbers, please!

7

ANDROID STUDIO – T IP 1

How often to update your IDE version?

8

ANDROID STUDIO – T IP 1

How often to update your IDE version?

• Use two installations: stable and canary

• Enable auto-update for the relevant channel

9

ANDROID STUDIO – T IP 2

How to make a code review?

Switch between branches could be slow:

•stash your changes

•checkout branch

• reload gradle config

10

ANDROID STUDIO – T IP 2

How to make a code review?

Switch between branches could be slow:

•stash your changes

•checkout branch

• reload gradle config

• Launch two IDE instances: one for the review, another one for the main work

• Yes, you will need a powerful machine

11

ANDROID STUDIO – T IP 3

Use Android Studio Live Templates

12

ANDROID STUDIO – T IP 3

Use Android Studio Live Templates

13

ANDROID STUDIO – T IP 4

Learn how to debug

14

ANDROID STUDIO – T IP 4

Learn how to debug

• Attach the debugger

15

ANDROID STUDIO – T IP 4

Learn how to debug

• Use Frames Debug window

16

ANDROID STUDIO – T IP 4

Learn how to debug

• Breakpoint only during interesting iterations

17

ANDROID STUDIO – T IP 5

18

ANDROID STUDIO – T IP 5

Fast preview & build

19

ANDROID STUDIO – T IP 5

Fast preview & build

JRebel

• Multidex only in expensive “Business” version

• 21-day trial

20

ANDROID STUDIO – T IP 5

Fast preview & build

JRebel

• Multidex only in expensive “Business” version

• 21-day trial

Instant Run

• minSdkVersion 15+, 21+ recommended

• Free & accepted by community

21

TEST DEVICES

22

TEST DEVICES – T IP 1

A lot of UI issues could be discovered if compare app on Lollipop and pre-Lollipop

devices

23

TEST DEVICES – T IP 1

A lot of UI issues could be discovered if compare app on Lollipop and pre-Lollipop

devices

• Use at least two emulator instances or devices during dev tests

• Use both 4.* and 5+ OS versions

24

TEST DEVICES – T IP 2

Emulators question

25

TEST DEVICES – T IP 2

Emulators question

Genymotion

• Free only for private use & limited functionality

• Latest OS version with the delay

26

TEST DEVICES – T IP 2

Emulators question

Genymotion

• Free only for private use & limited functionality

• Latest OS version with the delay

New Android SDK Emulator

• push apps/data 10x faster than to a device

• includes Google Play Services built-in

27

TEST DEVICES – T IP 3

(Cloud) Test Platforms

28

TEST DEVICES – T IP 3

(Cloud) Test Platforms

• Can execute scenarios (Espresso tests, Robotium etc.)

• Can take screenshots, measure device metrics, track logs

• Example: AWS Device Farm , TestDroid, Cloud Test Lab

29

TEST DEVICES – T IP 3

(Cloud) Test Platforms

• Also you can create your own device farm

• Open-source tools available like Square Spoon

30

APP PERFORMANCE

31

APP PERFORMANCE – T IP 1

Follow Android Performance Patterns

• https://www.youtube.com/playlist?list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE

32

APP PERFORMANCE – T IP 2

Measure execution time

33

APP PERFORMANCE – T IP 2

Measure execution time

• Hugo by Jake Wharton

@DebugLog

public String getName(String first, String last) {/* ... */}

V/Example: --> getName(first="Jake", last="Wharton")

V/Example: <-- getName [16ms] = "Jake Wharton"

34

APP PERFORMANCE – T IP 3

Check the frame rate (FPS)

35

APP PERFORMANCE – T IP 3

Check the frame rate (FPS)

• TinyDancer library (API 16+)

• Takt library (API 16+)

36

APP PERFORMANCE – T IP 4

Which options has Developer?

37

APP PERFORMANCE – T IP 4

Know your

Developer Options!

38

DEV & ENVIRONMENT

39

DEV & ENVIRONMENT – T IP 1

Support Annotations are your friends

40

DEV & ENVIRONMENT – T IP 1

Support Annotations are your friends

• Metadata annotations you can decorate your code with, to help catch bugs

• Dependency 'com.android.support:support-annotations:23.3.0‘

• Integrated with Android Studio & Lint

41

DEV & ENVIRONMENT – T IP 2

How to read logcat output from your device?

42

DEV & ENVIRONMENT – T IP 2

How to read logcat output from your device?

• Jake Wharton’s pidcat

43

DEV & ENVIRONMENT – T IP 3

Click on device/emulator screen every time you are testing some functionality

• BUT what if you have 5 test devices?

• AND you have a regression plan for 30 scenarios?

44

DEV & ENVIRONMENT – T IP 3

Click on device/emulator screen every time you are testing some functionality

• Use ADB commands/scripts to replace manual interactions

adb shell input keyevent 4

45

DEV & ENVIRONMENT – T IP 3 .5

Click on device/emulator screen every time you are testing some functionality

• Use adb-ninja script to submit your command to several devices simultaneously

https://github.com/romannurik/env/blob/master/bin/ninja-adb

46

DEV & ENVIRONMENT – T IP 4

Think about application tracking

47

DEV & ENVIRONMENT – T IP 4

Think about application tracking

• A lot of projects with overlapping functionality:

• Google Analytics

• Adjust

• Answers Events by Fabric

• Integration requires huge architecture effort

• Testing is always hard

48

DEV & ENVIRONMENT – T IP 5

Network output logging/analyzing?

49

DEV & ENVIRONMENT – T IP 5

Network output logging/analyzing

Use Http Monitoring & Proxy tools like Charles

• HTTP/HTTPS traffic monitoring

• Rewrite values

• Set breakpoints

50

DEV & ENVIRONMENT – T IP 6

All-in-one inspection tool by Facebook?

51

DEV & ENVIRONMENT – T IP 6

All-in-one inspection tool by Facebook!

• Stetho

• SQLite database

• Network proxy

• Hierarchy Viewer

• App preferences

52

GRADLE HACKS

53

GRADLE HACKS – T IP 1

Check your config

54

GRADLE HACKS – T IP 1

Check your config

build.gradle:

• Get rid of mavenCentral, use jcenter

• Check Gradle plugin version

• DON’T specify version ranges for the dependencies

55

GRADLE HACKS – T IP 1

Check your config

gradle.properties:

• org.gradle.daemon=true

• # if multiple modules:

org.gradle.parallel=true

56

GRADLE HACKS – T IP 2

How much time spent on building the app?

57

GRADLE HACKS – T IP 2

How much time spent on building the app?

• Track your time!

https://github.com/passy/build-time-tracker-plugin

58

GRADLE HACKS – T IP 2

How much time spent on building the app?

• Track your time!

59

GRADLE HACKS – T IP 3

Build faster using target API 21 for debug

60

GRADLE HACKS – T IP 3

Build faster using target API 21 for dev needs

productFlavors {

// Define separate dev and prod product flavors

dev21 { minSdkVersion 21 }

dev14 { minSdkVersion 14 }

prod {

// The actual minSdkVersion for the application.

minSdkVersion 14

}

}

61

CONCLUSION

62

CONCLUSION

• Keep optimizing time spent on repeating things

• Keep looking for ways how to build app faster

• It’s never too late to improve tools knowledge

top related