2. About Me
• Android & Rails developer at ChaiOne in Houston, Texas, USA
• Android apps on Google Play - DeliRadio, Music Library, and
Wrist Presenter
• Hobbies/Interests - Vinyl collector, coffee & beer snob, burger
aficionado
• Ich lerne Deutsch
3.
4. About DeliRadio
• Explore local concert
calendars
• Stream stations based on
location or specific venues
• Share discoveries with
friends
• Receive notifications when
favorite artists play nearby
6. About DeliRadio - Server Architecture
• Sinatra/Ruby API used by Android, iOS, and
third-party clients
• Virtual private cloud
• Web, database, and job servers
• Hosted on Amazon S3 & CloudFront CDN
• ElasticSearch & Redis for caching & high
performance search
7. Supported Android Versions Over Time
Early 2012
Min: Froyo
Max: Honeycomb
Mid 2012
Min: Froyo
Max: ICS
Early 2013
Min: Gingerbread
Max: Jelly Bean
Early 2014
Min: ICS
Max: KitKat
10. Development Tools (Early to Mid 2012)
Eclipse
• But which one?
• Build System: Ant
• Dependencies:
JAR files or
Maven (if you’re
patient)
11. Development Tools (Mid 2012 to Mid 2013)
Android Developer Tools (ADT) Bundle
• Android specific version of Eclipse
• Slightly more lightweight
12. Build Process - Eclipse & ADT
• Initial approach - File > Export, manually enter
keystore password, etc.
• Slightly better approach - Template based Ant
build
• Release & debug resources
• Custom Ant build targets with config specific
tokens
• Templates for manifest and other source files
13. Build Process - Eclipse & ADT
Problems with this approach
• Non-standard
• Templates must be be updated instead of
main files (i.e. manifest gets overwritten with
populated template on each build)
• Switching between release & debug must be
done via the command line. IDE just builds
current files.
14. Development Tools (Mid 2013 to Present)
Android Studio
• Gradle
• Maven dependencies - Similar to Ruby Gems
15. Build Process - Android Studio
Gradle
• Release & debug resources - automatically
merged during build process, no need for
templates
• Automated signing & version code
incrementing for release builds
• Automatic upload of test builds to Test Fairy
29. Graphics & User Interface
• iOS design != Android design - But iOS 7
blurred the lines
• Retina images - XHDPI
• Non-Retina images - MDPI
• Icon font - Scalable icons that can be styled as
text
30.
31.
32. Graphics - Using an Icon Font
1. Use Font Awesome web font or your own font
for scalable, styleable icons
2. Map font characters in a strings resource file
3. Load font, apply to TextView or Button subclass
4. Set view text to desired character, style, etc.
5. Bask in the awesome
!
https://github.com/bperin/FontAwesomeAndroid
35. User Interface - Multiple Screen Sizes
• Use ActionBarCompat & Nine Old Androids if
supporting Gingerbread or lower
• Use RelativeLayout where possible to
dynamically position views
• Dimensions in dimens.xml files, different
values directories for various screen sizes
• Screen size specific layouts where necessary
37. QA & Testing - Devices
• Too many to test them all
• Attempt to test a representative sample
• Major manufacturers - HTC/Motorola/
Samsung/Nexus
• After Gingerbread support dropped, OS version
& OEM customizations are much less of an
issue
38. QA Testing - Process
• Bugs & features entered in Pivotal Tracker
• Multiple builds delivered for testing each week
• Use Test Fairy test session videos to
troubleshoot device specific issues
• Full regression test of RC build before each
release