SlideShare a Scribd company logo
1 of 63
Download to read offline
EFFECTIVE
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 – TIP 0
Show line numbers, please!
7
ANDROID STUDIO – TIP 1
How often to update your IDE version?
8
ANDROID STUDIO – TIP 1
How often to update your IDE version?
• Use two installations: stable and canary
• Enable auto-update for the relevant channel
9
ANDROID STUDIO – TIP 2
How to make a code review?
Switch between branches could be slow:
•stash your changes
•checkout branch
•reload gradle config
10
ANDROID STUDIO – TIP 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 – TIP 3
Use Android Studio Live Templates
12
ANDROID STUDIO – TIP 3
Use Android Studio Live Templates
13
ANDROID STUDIO – TIP 4
Learn how to debug
14
ANDROID STUDIO – TIP 4
Learn how to debug
• Attach the debugger
15
ANDROID STUDIO – TIP 4
Learn how to debug
• Use Frames Debug window
16
ANDROID STUDIO – TIP 4
Learn how to debug
• Breakpoint only during interesting iterations
17
ANDROID STUDIO – TIP 5
18
ANDROID STUDIO – TIP 5
Fast preview & build
19
ANDROID STUDIO – TIP 5
Fast preview & build
JRebel
• Multidex only in expensive “Business” version
• 21-day trial
20
ANDROID STUDIO – TIP 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 – TIP 1
A lot of UI issues could be discovered if compare app on Lollipop and pre-Lollipop
devices
23
TEST DEVICES – TIP 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 – TIP 2
Emulators question
25
TEST DEVICES – TIP 2
Emulators question
Genymotion
• Free only for private use & limited functionality
• Latest OS version with the delay
26
TEST DEVICES – TIP 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 – TIP 3
(Cloud) Test Platforms
28
TEST DEVICES – TIP 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 – TIP 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 – TIP 1
Follow Android Performance Patterns
• https://www.youtube.com/playlist?list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE
32
APP PERFORMANCE – TIP 2
Measure execution time
33
APP PERFORMANCE – TIP 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 – TIP 3
Check the frame rate (FPS)
35
APP PERFORMANCE – TIP 3
Check the frame rate (FPS)
• TinyDancer library (API 16+)
• Takt library (API 16+)
36
APP PERFORMANCE – TIP 4
Which options has Developer?
37
APP PERFORMANCE – TIP 4
Know your
Developer Options!
38
DEV & ENVIRONMENT
39
DEV & ENVIRONMENT – TIP 1
Support Annotations are your friends
40
DEV & ENVIRONMENT – TIP 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 – TIP 2
How to read logcat output from your device?
42
DEV & ENVIRONMENT – TIP 2
How to read logcat output from your device?
• Jake Wharton’s pidcat
43
DEV & ENVIRONMENT – TIP 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 – TIP 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 – TIP 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 – TIP 4
Think about application tracking
47
DEV & ENVIRONMENT – TIP 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 – TIP 5
Network output logging/analyzing?
49
DEV & ENVIRONMENT – TIP 5
Network output logging/analyzing
Use Http Monitoring & Proxy tools like Charles
• HTTP/HTTPS traffic monitoring
• Rewrite values
• Set breakpoints
50
DEV & ENVIRONMENT – TIP 6
All-in-one inspection tool by Facebook?
51
DEV & ENVIRONMENT – TIP 6
All-in-one inspection tool by Facebook!
• Stetho
• SQLite database
• Network proxy
• Hierarchy Viewer
• App preferences
52
GRADLE HACKS
53
GRADLE HACKS – TIP 1
Check your config
54
GRADLE HACKS – TIP 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 – TIP 1
Check your config
gradle.properties:
• org.gradle.daemon=true
• # if multiple modules:
org.gradle.parallel=true
56
GRADLE HACKS – TIP 2
How much time spent on building the app?
57
GRADLE HACKS – TIP 2
How much time spent on building the app?
• Track your time!
https://github.com/passy/build-time-tracker-plugin
58
GRADLE HACKS – TIP 2
How much time spent on building the app?
• Track your time!
59
GRADLE HACKS – TIP 3
Build faster using target API 21 for debug
60
GRADLE HACKS – TIP 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
63
THANKS!
• tech.zalando.com/jobs
• @sergiizhuk
• medium.com/@sergii

More Related Content

What's hot

Tips for better CI on Android
Tips for better CI on AndroidTips for better CI on Android
Tips for better CI on AndroidTomoaki Imai
 
Automate your build on Android with Jenkins
Automate your build on Android with JenkinsAutomate your build on Android with Jenkins
Automate your build on Android with JenkinsBeMyApp
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Amazon Web Services
 
Continuous delivery - tools and techniques
Continuous delivery - tools and techniquesContinuous delivery - tools and techniques
Continuous delivery - tools and techniquesMike McGarr
 
Genymotion with Jenkins
Genymotion with JenkinsGenymotion with Jenkins
Genymotion with JenkinsVishal Nayak
 
Principles and Practices in Continuous Deployment at Etsy
Principles and Practices in Continuous Deployment at EtsyPrinciples and Practices in Continuous Deployment at Etsy
Principles and Practices in Continuous Deployment at EtsyMike Brittain
 
Head first android apps dev tools
Head first android apps dev toolsHead first android apps dev tools
Head first android apps dev toolsShaka Huang
 
Mobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CDMobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CDGlobalLogic Ukraine
 
Continous UI testing with Espresso and Jenkins
Continous UI testing with Espresso and JenkinsContinous UI testing with Espresso and Jenkins
Continous UI testing with Espresso and JenkinsSylwester Madej
 
Moderne Android Builds mit Gradle
Moderne Android Builds mit GradleModerne Android Builds mit Gradle
Moderne Android Builds mit Gradleinovex GmbH
 
Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
 Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to realityDaniel Gallego Vico
 
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...Sauce Labs
 
DevOps 及 TDD 開發流程哲學
DevOps 及 TDD 開發流程哲學DevOps 及 TDD 開發流程哲學
DevOps 及 TDD 開發流程哲學謝 宗穎
 
Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...
Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...
Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...Codemotion
 
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java ApplicationTrust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java ApplicationElias Nogueira
 
Introduction to Continuous Delivery (BBWorld/DevCon 2013)
Introduction to Continuous Delivery (BBWorld/DevCon 2013)Introduction to Continuous Delivery (BBWorld/DevCon 2013)
Introduction to Continuous Delivery (BBWorld/DevCon 2013)Mike McGarr
 
MDC2011 Android_ Webdriver Automation Test
MDC2011 Android_ Webdriver Automation TestMDC2011 Android_ Webdriver Automation Test
MDC2011 Android_ Webdriver Automation TestMasud Parvez
 
Playwright: A New Test Automation Framework for the Modern Web
Playwright: A New Test Automation Framework for the Modern WebPlaywright: A New Test Automation Framework for the Modern Web
Playwright: A New Test Automation Framework for the Modern WebApplitools
 
Blazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java UniverseBlazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java UniverseMichał Kordas
 

What's hot (20)

Tips for better CI on Android
Tips for better CI on AndroidTips for better CI on Android
Tips for better CI on Android
 
Automate your build on Android with Jenkins
Automate your build on Android with JenkinsAutomate your build on Android with Jenkins
Automate your build on Android with Jenkins
 
Ci for-android-apps
Ci for-android-appsCi for-android-apps
Ci for-android-apps
 
Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration Continuous Delivery, Continuous Integration
Continuous Delivery, Continuous Integration
 
Continuous delivery - tools and techniques
Continuous delivery - tools and techniquesContinuous delivery - tools and techniques
Continuous delivery - tools and techniques
 
Genymotion with Jenkins
Genymotion with JenkinsGenymotion with Jenkins
Genymotion with Jenkins
 
Principles and Practices in Continuous Deployment at Etsy
Principles and Practices in Continuous Deployment at EtsyPrinciples and Practices in Continuous Deployment at Etsy
Principles and Practices in Continuous Deployment at Etsy
 
Head first android apps dev tools
Head first android apps dev toolsHead first android apps dev tools
Head first android apps dev tools
 
Mobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CDMobile Apps development best practices. TDD, CI, CD
Mobile Apps development best practices. TDD, CI, CD
 
Continous UI testing with Espresso and Jenkins
Continous UI testing with Espresso and JenkinsContinous UI testing with Espresso and Jenkins
Continous UI testing with Espresso and Jenkins
 
Moderne Android Builds mit Gradle
Moderne Android Builds mit GradleModerne Android Builds mit Gradle
Moderne Android Builds mit Gradle
 
Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
 Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
Droidcon Spain 2016 - The Pragmatic Android Programmer: from hype to reality
 
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
Closer To the Metal - Why and How We Use XCTest and Espresso by Mario Negro P...
 
DevOps 及 TDD 開發流程哲學
DevOps 及 TDD 開發流程哲學DevOps 及 TDD 開發流程哲學
DevOps 及 TDD 開發流程哲學
 
Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...
Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...
Steve Sfartz - How to embed Messaging and Video in your apps - Codemotion Mil...
 
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java ApplicationTrust Your Pipeline - Automatically Testing and End-to-End Java Application
Trust Your Pipeline - Automatically Testing and End-to-End Java Application
 
Introduction to Continuous Delivery (BBWorld/DevCon 2013)
Introduction to Continuous Delivery (BBWorld/DevCon 2013)Introduction to Continuous Delivery (BBWorld/DevCon 2013)
Introduction to Continuous Delivery (BBWorld/DevCon 2013)
 
MDC2011 Android_ Webdriver Automation Test
MDC2011 Android_ Webdriver Automation TestMDC2011 Android_ Webdriver Automation Test
MDC2011 Android_ Webdriver Automation Test
 
Playwright: A New Test Automation Framework for the Modern Web
Playwright: A New Test Automation Framework for the Modern WebPlaywright: A New Test Automation Framework for the Modern Web
Playwright: A New Test Automation Framework for the Modern Web
 
Blazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java UniverseBlazing Fast Feedback Loops in the Java Universe
Blazing Fast Feedback Loops in the Java Universe
 

Viewers also liked

iOS App Development Company
iOS App Development CompanyiOS App Development Company
iOS App Development CompanyMobilmindz
 
Mustafa Değerli - 2015 - UYMS 2015 Sunum - Mobil İşletim Sistemleri (iOS ve A...
Mustafa Değerli - 2015 - UYMS 2015 Sunum - Mobil İşletim Sistemleri (iOS ve A...Mustafa Değerli - 2015 - UYMS 2015 Sunum - Mobil İşletim Sistemleri (iOS ve A...
Mustafa Değerli - 2015 - UYMS 2015 Sunum - Mobil İşletim Sistemleri (iOS ve A...Dr. Mustafa Değerli
 
iOS - Overview of Mobile Application Developement
iOS - Overview of Mobile Application Developement iOS - Overview of Mobile Application Developement
iOS - Overview of Mobile Application Developement Rohit214
 
Getting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and AndroidGetting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and AndroidEmbarcadero Technologies
 
Apple - what's new in iOS 10, watchOS 3 & tvOS 10
Apple - what's new in iOS 10, watchOS 3 & tvOS 10Apple - what's new in iOS 10, watchOS 3 & tvOS 10
Apple - what's new in iOS 10, watchOS 3 & tvOS 10Accedo
 
iOS and Android Training Workshops 2016 by Teks Mobile Sverige
iOS and Android Training Workshops 2016 by Teks Mobile SverigeiOS and Android Training Workshops 2016 by Teks Mobile Sverige
iOS and Android Training Workshops 2016 by Teks Mobile SverigeSayudh Sarkar
 
Mob Programming (2016)
Mob Programming (2016)Mob Programming (2016)
Mob Programming (2016)Peter Kofler
 
MIPI DevCon 2016: Mobile Technology Expands to New Horizons
MIPI DevCon 2016: Mobile Technology Expands to New HorizonsMIPI DevCon 2016: Mobile Technology Expands to New Horizons
MIPI DevCon 2016: Mobile Technology Expands to New HorizonsMIPI Alliance
 
Mobile, Smartphones, Wi-Fi, and Apps as one of my 2016-2017 lectures at the U...
Mobile, Smartphones, Wi-Fi, and Apps as one of my 2016-2017 lectures at the U...Mobile, Smartphones, Wi-Fi, and Apps as one of my 2016-2017 lectures at the U...
Mobile, Smartphones, Wi-Fi, and Apps as one of my 2016-2017 lectures at the U...Roberto Peretta
 
2016 Mobile Engagement Trends
2016 Mobile Engagement Trends2016 Mobile Engagement Trends
2016 Mobile Engagement TrendsSyniverse
 
The fundamentals of Android and iOS app security
The fundamentals of Android and iOS app securityThe fundamentals of Android and iOS app security
The fundamentals of Android and iOS app securityNowSecure
 
Android vs. IOS: Comparing features & functions
Android vs. IOS: Comparing features & functionsAndroid vs. IOS: Comparing features & functions
Android vs. IOS: Comparing features & functionsDipesh Bhatiya
 
History of iOS
History of iOSHistory of iOS
History of iOSpyro2927
 
Android 7.0 Nougat マルチウィンドウ解説+α
Android 7.0 Nougat マルチウィンドウ解説+αAndroid 7.0 Nougat マルチウィンドウ解説+α
Android 7.0 Nougat マルチウィンドウ解説+αKenichi Kambara
 
A Brief History of iOS
A Brief History of iOSA Brief History of iOS
A Brief History of iOSNahum365
 
ppt on android vs iOS
ppt on android vs iOSppt on android vs iOS
ppt on android vs iOSShivam Gupta
 
Apple iOS - A modern way to mobile operating system
Apple iOS - A modern way to mobile operating systemApple iOS - A modern way to mobile operating system
Apple iOS - A modern way to mobile operating systemDhruv Patel
 
Apple iOS Introduction
Apple iOS IntroductionApple iOS Introduction
Apple iOS IntroductionPratik Vyas
 

Viewers also liked (20)

iOS App Development Company
iOS App Development CompanyiOS App Development Company
iOS App Development Company
 
Mustafa Değerli - 2015 - UYMS 2015 Sunum - Mobil İşletim Sistemleri (iOS ve A...
Mustafa Değerli - 2015 - UYMS 2015 Sunum - Mobil İşletim Sistemleri (iOS ve A...Mustafa Değerli - 2015 - UYMS 2015 Sunum - Mobil İşletim Sistemleri (iOS ve A...
Mustafa Değerli - 2015 - UYMS 2015 Sunum - Mobil İşletim Sistemleri (iOS ve A...
 
iOS - Overview of Mobile Application Developement
iOS - Overview of Mobile Application Developement iOS - Overview of Mobile Application Developement
iOS - Overview of Mobile Application Developement
 
Getting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and AndroidGetting Started Building Mobile Applications for iOS and Android
Getting Started Building Mobile Applications for iOS and Android
 
Apple - what's new in iOS 10, watchOS 3 & tvOS 10
Apple - what's new in iOS 10, watchOS 3 & tvOS 10Apple - what's new in iOS 10, watchOS 3 & tvOS 10
Apple - what's new in iOS 10, watchOS 3 & tvOS 10
 
iOS and Android Training Workshops 2016 by Teks Mobile Sverige
iOS and Android Training Workshops 2016 by Teks Mobile SverigeiOS and Android Training Workshops 2016 by Teks Mobile Sverige
iOS and Android Training Workshops 2016 by Teks Mobile Sverige
 
iOS PPT
iOS PPTiOS PPT
iOS PPT
 
Mob Programming (2016)
Mob Programming (2016)Mob Programming (2016)
Mob Programming (2016)
 
MIPI DevCon 2016: Mobile Technology Expands to New Horizons
MIPI DevCon 2016: Mobile Technology Expands to New HorizonsMIPI DevCon 2016: Mobile Technology Expands to New Horizons
MIPI DevCon 2016: Mobile Technology Expands to New Horizons
 
Mobile, Smartphones, Wi-Fi, and Apps as one of my 2016-2017 lectures at the U...
Mobile, Smartphones, Wi-Fi, and Apps as one of my 2016-2017 lectures at the U...Mobile, Smartphones, Wi-Fi, and Apps as one of my 2016-2017 lectures at the U...
Mobile, Smartphones, Wi-Fi, and Apps as one of my 2016-2017 lectures at the U...
 
2016 Mobile Engagement Trends
2016 Mobile Engagement Trends2016 Mobile Engagement Trends
2016 Mobile Engagement Trends
 
The fundamentals of Android and iOS app security
The fundamentals of Android and iOS app securityThe fundamentals of Android and iOS app security
The fundamentals of Android and iOS app security
 
Android vs. IOS: Comparing features & functions
Android vs. IOS: Comparing features & functionsAndroid vs. IOS: Comparing features & functions
Android vs. IOS: Comparing features & functions
 
History of iOS
History of iOSHistory of iOS
History of iOS
 
Android 7.0 Nougat マルチウィンドウ解説+α
Android 7.0 Nougat マルチウィンドウ解説+αAndroid 7.0 Nougat マルチウィンドウ解説+α
Android 7.0 Nougat マルチウィンドウ解説+α
 
A Brief History of iOS
A Brief History of iOSA Brief History of iOS
A Brief History of iOS
 
ppt on android vs iOS
ppt on android vs iOSppt on android vs iOS
ppt on android vs iOS
 
Apple iOS - A modern way to mobile operating system
Apple iOS - A modern way to mobile operating systemApple iOS - A modern way to mobile operating system
Apple iOS - A modern way to mobile operating system
 
Apple iOS Introduction
Apple iOS IntroductionApple iOS Introduction
Apple iOS Introduction
 
Ios operating system
Ios operating systemIos operating system
Ios operating system
 

Similar to Effective Android Development. UA Mobile 2016.

What is the Siemens Open Library, and How it Decreased Development Time for E...
What is the Siemens Open Library, and How it Decreased Development Time for E...What is the Siemens Open Library, and How it Decreased Development Time for E...
What is the Siemens Open Library, and How it Decreased Development Time for E...DMC, Inc.
 
Battle for Code Quality - A Story of One Java Project
Battle for Code Quality - A Story of One Java ProjectBattle for Code Quality - A Story of One Java Project
Battle for Code Quality - A Story of One Java ProjectGlobalLogic Ukraine
 
Droidcon Spain 2105 - One app to rule them all: Methodologies, Tools & Tricks...
Droidcon Spain 2105 - One app to rule them all: Methodologies, Tools & Tricks...Droidcon Spain 2105 - One app to rule them all: Methodologies, Tools & Tricks...
Droidcon Spain 2105 - One app to rule them all: Methodologies, Tools & Tricks...Daniel Gallego Vico
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development PipelineGlobalLogic Ukraine
 
Continuous delivery is more than dev ops
Continuous delivery is more than dev opsContinuous delivery is more than dev ops
Continuous delivery is more than dev opsAgile Montréal
 
TMF2014 Mobile Testing Workshop Michael Palotas
TMF2014 Mobile Testing Workshop Michael PalotasTMF2014 Mobile Testing Workshop Michael Palotas
TMF2014 Mobile Testing Workshop Michael PalotasKJR
 
Is code review the solution?
Is code review the solution?Is code review the solution?
Is code review the solution?Tiago Mendo
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android ApplicationsLeif Janzik
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Marcin Grzejszczak
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Applitools
 
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)François
 
Continuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneContinuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneDashlane
 
Next Step, Android Studio!
Next Step, Android Studio!Next Step, Android Studio!
Next Step, Android Studio!Édipo Souza
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using JenkinsRogue Wave Software
 
Continuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfestContinuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfestMarcin Grzejszczak
 
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023Vadym Kazulkin
 
Code checkup
Code checkupCode checkup
Code checkupDoug Mair
 
Understand release engineering
Understand release engineeringUnderstand release engineering
Understand release engineeringgaoliang641
 
Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...
Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...
Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...Inflectra
 

Similar to Effective Android Development. UA Mobile 2016. (20)

Introduction to Unit Tests and TDD
Introduction to Unit Tests and TDDIntroduction to Unit Tests and TDD
Introduction to Unit Tests and TDD
 
What is the Siemens Open Library, and How it Decreased Development Time for E...
What is the Siemens Open Library, and How it Decreased Development Time for E...What is the Siemens Open Library, and How it Decreased Development Time for E...
What is the Siemens Open Library, and How it Decreased Development Time for E...
 
Battle for Code Quality - A Story of One Java Project
Battle for Code Quality - A Story of One Java ProjectBattle for Code Quality - A Story of One Java Project
Battle for Code Quality - A Story of One Java Project
 
Droidcon Spain 2105 - One app to rule them all: Methodologies, Tools & Tricks...
Droidcon Spain 2105 - One app to rule them all: Methodologies, Tools & Tricks...Droidcon Spain 2105 - One app to rule them all: Methodologies, Tools & Tricks...
Droidcon Spain 2105 - One app to rule them all: Methodologies, Tools & Tricks...
 
Modern Web-site Development Pipeline
Modern Web-site Development PipelineModern Web-site Development Pipeline
Modern Web-site Development Pipeline
 
Continuous delivery is more than dev ops
Continuous delivery is more than dev opsContinuous delivery is more than dev ops
Continuous delivery is more than dev ops
 
TMF2014 Mobile Testing Workshop Michael Palotas
TMF2014 Mobile Testing Workshop Michael PalotasTMF2014 Mobile Testing Workshop Michael Palotas
TMF2014 Mobile Testing Workshop Michael Palotas
 
Is code review the solution?
Is code review the solution?Is code review the solution?
Is code review the solution?
 
Building High Quality Android Applications
Building High Quality Android ApplicationsBuilding High Quality Android Applications
Building High Quality Android Applications
 
Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017 Continuous Deployment To The Cloud @DevoxxPL 2017
Continuous Deployment To The Cloud @DevoxxPL 2017
 
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
 
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
The Story of SNCF Connect - biggest Flutter app in Europe (@FlutterHeroes 2023)
 
Continuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at DashlaneContinuous Delivery: releasing Better and Faster at Dashlane
Continuous Delivery: releasing Better and Faster at Dashlane
 
Next Step, Android Studio!
Next Step, Android Studio!Next Step, Android Studio!
Next Step, Android Studio!
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
 
Continuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfestContinuous Deployment of your Application @JUGtoberfest
Continuous Deployment of your Application @JUGtoberfest
 
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
Github Copilot vs Amazon CodeWhisperer for Java developers at JCON 2023
 
Code checkup
Code checkupCode checkup
Code checkup
 
Understand release engineering
Understand release engineeringUnderstand release engineering
Understand release engineering
 
Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...
Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...
Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...
 

More from UA Mobile

Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...UA Mobile
 
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...UA Mobile
 
Leave your Room behind - UA Mobile 2019
Leave your Room behind - UA Mobile 2019Leave your Room behind - UA Mobile 2019
Leave your Room behind - UA Mobile 2019UA Mobile
 
OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019
OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019
OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019UA Mobile
 
Google Wear OS watch faces and applications development - UA Mobile 2019
Google Wear OS watch faces and applications development - UA Mobile 2019Google Wear OS watch faces and applications development - UA Mobile 2019
Google Wear OS watch faces and applications development - UA Mobile 2019UA Mobile
 
Історія декількох проектів та що в них пішло не так - UA Mobile 2019
Історія декількох проектів та що в них пішло не так - UA Mobile 2019Історія декількох проектів та що в них пішло не так - UA Mobile 2019
Історія декількох проектів та що в них пішло не так - UA Mobile 2019UA Mobile
 
Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019UA Mobile
 
Managing State in Reactive applications - UA Mobile 2019
Managing State in Reactive applications - UA Mobile 2019Managing State in Reactive applications - UA Mobile 2019
Managing State in Reactive applications - UA Mobile 2019UA Mobile
 
Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019
Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019
Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019UA Mobile
 
Актуальні практики дизайну мобільних додатків - UA Mobile 2019
Актуальні практики дизайну мобільних додатків - UA Mobile 2019Актуальні практики дизайну мобільних додатків - UA Mobile 2019
Актуальні практики дизайну мобільних додатків - UA Mobile 2019UA Mobile
 
До чого прикладати Docker в Android? - UA Mobile 2019
До чого прикладати Docker в Android? - UA Mobile 2019До чого прикладати Docker в Android? - UA Mobile 2019
До чого прикладати Docker в Android? - UA Mobile 2019UA Mobile
 
Building your Flutter apps using Redux - UA Mobile 2019
Building your Flutter apps using Redux - UA Mobile 2019Building your Flutter apps using Redux - UA Mobile 2019
Building your Flutter apps using Redux - UA Mobile 2019UA Mobile
 
Optional. Tips and Tricks - UA Mobile 2019
Optional. Tips and Tricks - UA Mobile 2019Optional. Tips and Tricks - UA Mobile 2019
Optional. Tips and Tricks - UA Mobile 2019UA Mobile
 
Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...UA Mobile
 
Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019
Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019
Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019UA Mobile
 
Flutter: No more boring apps! - UA Mobile 2019
Flutter: No more boring apps! - UA Mobile 2019Flutter: No more boring apps! - UA Mobile 2019
Flutter: No more boring apps! - UA Mobile 2019UA Mobile
 
Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019
Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019
Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019UA Mobile
 
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019UA Mobile
 
Sceneform SDK на практиці - UA Mobile 2019
Sceneform SDK на практиці - UA Mobile 2019Sceneform SDK на практиці - UA Mobile 2019
Sceneform SDK на практиці - UA Mobile 2019UA Mobile
 
Coroutines in Kotlin. UA Mobile 2017.
Coroutines in Kotlin. UA Mobile 2017.Coroutines in Kotlin. UA Mobile 2017.
Coroutines in Kotlin. UA Mobile 2017.UA Mobile
 

More from UA Mobile (20)

Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...
 
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
Декларативное программирование клиент-серверных приложений на андроид - UA Mo...
 
Leave your Room behind - UA Mobile 2019
Leave your Room behind - UA Mobile 2019Leave your Room behind - UA Mobile 2019
Leave your Room behind - UA Mobile 2019
 
OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019
OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019
OpenId and OAuth2: Rear, Medium, Well Done - UA Mobile 2019
 
Google Wear OS watch faces and applications development - UA Mobile 2019
Google Wear OS watch faces and applications development - UA Mobile 2019Google Wear OS watch faces and applications development - UA Mobile 2019
Google Wear OS watch faces and applications development - UA Mobile 2019
 
Історія декількох проектів та що в них пішло не так - UA Mobile 2019
Історія декількох проектів та що в них пішло не так - UA Mobile 2019Історія декількох проектів та що в них пішло не так - UA Mobile 2019
Історія декількох проектів та що в них пішло не так - UA Mobile 2019
 
Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019Working effectively with ViewModels and TDD - UA Mobile 2019
Working effectively with ViewModels and TDD - UA Mobile 2019
 
Managing State in Reactive applications - UA Mobile 2019
Managing State in Reactive applications - UA Mobile 2019Managing State in Reactive applications - UA Mobile 2019
Managing State in Reactive applications - UA Mobile 2019
 
Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019
Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019
Ідіоматична ін'єкція залежностей на Kotlin без фреймворків - UA Mobile2019
 
Актуальні практики дизайну мобільних додатків - UA Mobile 2019
Актуальні практики дизайну мобільних додатків - UA Mobile 2019Актуальні практики дизайну мобільних додатків - UA Mobile 2019
Актуальні практики дизайну мобільних додатків - UA Mobile 2019
 
До чого прикладати Docker в Android? - UA Mobile 2019
До чого прикладати Docker в Android? - UA Mobile 2019До чого прикладати Docker в Android? - UA Mobile 2019
До чого прикладати Docker в Android? - UA Mobile 2019
 
Building your Flutter apps using Redux - UA Mobile 2019
Building your Flutter apps using Redux - UA Mobile 2019Building your Flutter apps using Redux - UA Mobile 2019
Building your Flutter apps using Redux - UA Mobile 2019
 
Optional. Tips and Tricks - UA Mobile 2019
Optional. Tips and Tricks - UA Mobile 2019Optional. Tips and Tricks - UA Mobile 2019
Optional. Tips and Tricks - UA Mobile 2019
 
Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...Designing iOS+Android project without using multiplatform frameworks - UA Mob...
Designing iOS+Android project without using multiplatform frameworks - UA Mob...
 
Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019
Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019
Бібліотеки та Інструменти на сторожі коду - UA Mobile 2019
 
Flutter: No more boring apps! - UA Mobile 2019
Flutter: No more boring apps! - UA Mobile 2019Flutter: No more boring apps! - UA Mobile 2019
Flutter: No more boring apps! - UA Mobile 2019
 
Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019
Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019
Долаючи прірву між дизайнерами та розробниками - UA Mobile 2019
 
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
 
Sceneform SDK на практиці - UA Mobile 2019
Sceneform SDK на практиці - UA Mobile 2019Sceneform SDK на практиці - UA Mobile 2019
Sceneform SDK на практиці - UA Mobile 2019
 
Coroutines in Kotlin. UA Mobile 2017.
Coroutines in Kotlin. UA Mobile 2017.Coroutines in Kotlin. UA Mobile 2017.
Coroutines in Kotlin. UA Mobile 2017.
 

Recently uploaded

Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providermohitmore19
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....ShaimaaMohamedGalal
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendArshad QA
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 

Recently uploaded (20)

Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Clustering techniques data mining book ....
Clustering techniques data mining book ....Clustering techniques data mining book ....
Clustering techniques data mining book ....
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Test Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and BackendTest Automation Strategy for Frontend and Backend
Test Automation Strategy for Frontend and Backend
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 

Effective Android Development. UA Mobile 2016.

  • 1. EFFECTIVE ANDROID DEVELOPMENT S E R G I I Z H U K 1 6 - 0 4 - 2 0 1 6
  • 2. 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. 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. 4 AGENDA • Android Studio • Test Devices • Dev & Environment • App Performance • Gradle Hacks
  • 6. 6 ANDROID STUDIO – TIP 0 Show line numbers, please!
  • 7. 7 ANDROID STUDIO – TIP 1 How often to update your IDE version?
  • 8. 8 ANDROID STUDIO – TIP 1 How often to update your IDE version? • Use two installations: stable and canary • Enable auto-update for the relevant channel
  • 9. 9 ANDROID STUDIO – TIP 2 How to make a code review? Switch between branches could be slow: •stash your changes •checkout branch •reload gradle config
  • 10. 10 ANDROID STUDIO – TIP 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. 11 ANDROID STUDIO – TIP 3 Use Android Studio Live Templates
  • 12. 12 ANDROID STUDIO – TIP 3 Use Android Studio Live Templates
  • 13. 13 ANDROID STUDIO – TIP 4 Learn how to debug
  • 14. 14 ANDROID STUDIO – TIP 4 Learn how to debug • Attach the debugger
  • 15. 15 ANDROID STUDIO – TIP 4 Learn how to debug • Use Frames Debug window
  • 16. 16 ANDROID STUDIO – TIP 4 Learn how to debug • Breakpoint only during interesting iterations
  • 18. 18 ANDROID STUDIO – TIP 5 Fast preview & build
  • 19. 19 ANDROID STUDIO – TIP 5 Fast preview & build JRebel • Multidex only in expensive “Business” version • 21-day trial
  • 20. 20 ANDROID STUDIO – TIP 5 Fast preview & build JRebel • Multidex only in expensive “Business” version • 21-day trial Instant Run • minSdkVersion 15+, 21+ recommended • Free & accepted by community
  • 22. 22 TEST DEVICES – TIP 1 A lot of UI issues could be discovered if compare app on Lollipop and pre-Lollipop devices
  • 23. 23 TEST DEVICES – TIP 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. 24 TEST DEVICES – TIP 2 Emulators question
  • 25. 25 TEST DEVICES – TIP 2 Emulators question Genymotion • Free only for private use & limited functionality • Latest OS version with the delay
  • 26. 26 TEST DEVICES – TIP 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. 27 TEST DEVICES – TIP 3 (Cloud) Test Platforms
  • 28. 28 TEST DEVICES – TIP 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. 29 TEST DEVICES – TIP 3 (Cloud) Test Platforms • Also you can create your own device farm • Open-source tools available like Square Spoon
  • 31. 31 APP PERFORMANCE – TIP 1 Follow Android Performance Patterns • https://www.youtube.com/playlist?list=PLWz5rJ2EKKc9CBxr3BVjPTPoDPLdPIFCE
  • 32. 32 APP PERFORMANCE – TIP 2 Measure execution time
  • 33. 33 APP PERFORMANCE – TIP 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. 34 APP PERFORMANCE – TIP 3 Check the frame rate (FPS)
  • 35. 35 APP PERFORMANCE – TIP 3 Check the frame rate (FPS) • TinyDancer library (API 16+) • Takt library (API 16+)
  • 36. 36 APP PERFORMANCE – TIP 4 Which options has Developer?
  • 37. 37 APP PERFORMANCE – TIP 4 Know your Developer Options!
  • 39. 39 DEV & ENVIRONMENT – TIP 1 Support Annotations are your friends
  • 40. 40 DEV & ENVIRONMENT – TIP 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. 41 DEV & ENVIRONMENT – TIP 2 How to read logcat output from your device?
  • 42. 42 DEV & ENVIRONMENT – TIP 2 How to read logcat output from your device? • Jake Wharton’s pidcat
  • 43. 43 DEV & ENVIRONMENT – TIP 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. 44 DEV & ENVIRONMENT – TIP 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. 45 DEV & ENVIRONMENT – TIP 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. 46 DEV & ENVIRONMENT – TIP 4 Think about application tracking
  • 47. 47 DEV & ENVIRONMENT – TIP 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. 48 DEV & ENVIRONMENT – TIP 5 Network output logging/analyzing?
  • 49. 49 DEV & ENVIRONMENT – TIP 5 Network output logging/analyzing Use Http Monitoring & Proxy tools like Charles • HTTP/HTTPS traffic monitoring • Rewrite values • Set breakpoints
  • 50. 50 DEV & ENVIRONMENT – TIP 6 All-in-one inspection tool by Facebook?
  • 51. 51 DEV & ENVIRONMENT – TIP 6 All-in-one inspection tool by Facebook! • Stetho • SQLite database • Network proxy • Hierarchy Viewer • App preferences
  • 53. 53 GRADLE HACKS – TIP 1 Check your config
  • 54. 54 GRADLE HACKS – TIP 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. 55 GRADLE HACKS – TIP 1 Check your config gradle.properties: • org.gradle.daemon=true • # if multiple modules: org.gradle.parallel=true
  • 56. 56 GRADLE HACKS – TIP 2 How much time spent on building the app?
  • 57. 57 GRADLE HACKS – TIP 2 How much time spent on building the app? • Track your time! https://github.com/passy/build-time-tracker-plugin
  • 58. 58 GRADLE HACKS – TIP 2 How much time spent on building the app? • Track your time!
  • 59. 59 GRADLE HACKS – TIP 3 Build faster using target API 21 for debug
  • 60. 60 GRADLE HACKS – TIP 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 } }
  • 62. 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