As Android platform continues its incredible growth, more and more developers start working on Android apps. If you are beginning Android development in 2013, you are a lucky person, as the platform has greatly matured in the last few years. While the number of available developer resources may seem overwhelming, this post points to the most important ones.
This post may be useful for both beginners and moderately experienced Android developers, as a single place where most useful resources are listed.
You may think that starting to learn a new development platform in 2013 by reading a book is old-fashioned and you may be right. But you should still do it: see Programmers Don’t Read Books – But You Should by Jeff Atwood.
I recommend these 2 books:
- The Busy Coder’s Guide to Android Development by Mark Murphy. What makes this book special is not only its depth of coverage (2000+ pages), but its frequent updates (~every 2 months). This is by far the best model for books on such rapidly evolving topic as Android SDK. Mark Murphy also regularly holds office hours, where subscribers can ask questions. Book samples are hosted on github. Highly recommended.
- Smashing UI by Juhani Lehtimaki. An excellent book for any Android developer who cares about great UI design.
Before starting to write your first Android application, read and learn Android Design site by heart. Specifically, these articles:
Also check out the Downloads section, which contains stencils, source files for icons and controls, styled and unstyled Action Bar icons.
Ready to start coding? Sorry, keep reading:
- Best Practices for User Experience & UI (a must read)
- Best Practices for Performance
- Displaying Bitmaps Efficiently
- Adding Animations (also see NineOldAndroids library)
- Tools help
- SDK Samples
A number of Android core framework engineers, developer advocates and expert Android developers regularly answer questions on stackoverflow.com. Here’s a list of top stackoverflow Android users. I’m subscribed to RSS answers’ feeds of many SO users; some of them are: CommonsWare (Mark Murphy), Dianne Hackborn, Romain Guy, Reto Meier, Trevor Johns, Roman Nurik, Adam Powell (thanks, @remdroid!).
Many blogs provide great up to date information about Android development:
- Android Dev Weekly by Gyuri Grell. An excellent weekly newsletter with the latest Android development news. Highly recommended.
- Official Android developers blog. It’s worth browsing through this blog’s archives, as some of the posts are meaty, e.g.: Avoiding memory leaks, Memory Analysis for Android Applications.
- Romain Guy. An excellent blog by key Android framework engineer. Once you are comfortable with Android development, make sure to read Android Performance Case Study post. Off-topic: Romain is also a great photographer.
- Codependent by Chet Haase, creator of Android animation framework.
- The CommonsBlog by Mark Murphy.
- Cyril Mottier’s Android dev blog. A fantastic resource with posts of great depth. Some of the latest posts: ListView Tips & Tricks #5: Enlarged Touchable Areas, Tweeted Android Development Tips, The Google Maps Android API V2 Utopia, Android App Launching Made Gorgeous, “Pull-to-refresh”: An Anti UI Pattern on Android.
- Styling Android by Mark Allison.
- Daniel’s Lew’s Coding Thoughts - great tips from one of the developers behind excellent Expedia’s Hotels and Flights app (formely: Mobiata).
While Google+ has not become the social network, it is an invaluable source of information about Android development. Some of the Google+ profiles you may consider to follow are: Tor Norbye (ADT), Dianne Hackborn, Romain Guy, Chris Banes, Roman Nurik, Nick Butcher, Adam Powell, Rich Hyndman, Cyril Mottier, Paul Burke, Jeff Gilfelt.
Also consider joining few of the Google+ communities:
Open source projects
Reading source code of well designed apps is always a good idea:
- Google I/O Android app. If you like to copy/paste code, this is the place to copy from.
- Photup by Chris Banes.
- Android Protips: A Deep Dive Into Location by Reto Meier. Demonstrates use of location detection, fragments, and BackupManager. Use with care, as this code has not been updated for some time.
And, of course, the ultimate source: Android source code.
Open source libraries
Some of the most useful open source libraries:
- ActionBarSherlock by Jake Wharton. Library for implementing the action bar design pattern using the native action bar on Android 4.0+ and a custom implementation on pre-4.0 through a single API and theme.
- ViewPagerIndicator by Jake Wharton. Paging indicator widgets compatible with the ViewPager from the Android Support Library and ActionBarSherlock. Originally based on Patrik Åkerfeldt’s ViewFlow.
- NineOldAndroids by Jake Wharton. Android library for using the Honeycomb animation API on all versions of the platform back to 1.0.
- Universal-Image-Loader by Sergey Tarasevich. Powerful and flexible instrument for asynchronous image loading, caching and displaying.
- UrlImageViewHelper by Koushik Dutta. UrlImageViewHelper fills an ImageView with an image that is found at a URL and automatically downloads, saves, and caches all the bitmaps.
- Android-BitmapCache by Chris Banes. A specialised cache, for use with Android Bitmap objects.
- DiskLruCache by Jake Wharton. Java implementation of a Disk-based LRU cache which specifically targets Android compatibility.
Google I/O talks
While it has become virtually impossible to get a Google I/O ticket, all Google I/O talks are available online, usually with slides. Links to Google I/O Android sessions over the years: 2012, 2011, 2010, 2009.
Some of my favorite talks:
- Advanced Design for Engineers by Alex Faaborg and Christian Robertson (2012)
- For Butter or Worse: Smoothing Out Performance in Android UIs by Chet Haase, Romain Guy (2012)
- Navigation in Android by Adam Powell, Richard Fulcher (2012). If you happen to think that fixing Android back/up buttons issues is easy, watch this humbling talk.
- So You’ve Read the Design Guide; Now What? by Daniel Lehmann, Tor Norbye, Richard Ngo (2012)
- What’s New in Android? by Chet Haase, Romain Guy, Daniel Sandler (2012)
- What’s New in Android Developers’ Tools by Xavier Ducrohet, Tor Norbye (2012)
- Memory management for Android Apps by Patrick Dubroy (2011)
- Writing zippy Android apps by Brad Fitzpatrick (2010)
- Developing Android REST client applications by Virgil Dobjanschi (2010)
Please stop, you’re scaring me
If this post looks a bit overwhelming, don’t despair. Some of the links above are useful only for beginners, while others are useful for more advanced developers.
Few tips on how to efficiently consume this content:
- First, read the books. Did I mention you should read the books? This will lay the proper foundation of your Android knowledge.
- Subscribe to blogs and stackoverflow answer feeds via RSS.
- Set up an android-dev circle in Google+.
As Android developer ecosystem continues to flourish with contributions from many exceptionally talented developers, special mentions should be reserved for two people who have been instrumental in making lives of Android developers easier. They are: Mark Murphy and Jake Wharton.
Mark and Jake have earned an unlimited beer for life for making some of the most useful contributions to Android open source. If you ever meet them, make sure to buy them a drink of their choice. [correction: based on the comments below, Mark's beer should instead be directed to Chris Bane. And if you read that far, you know that the best way to thank Mark would be a CommonsWare subscription.]
Obviously, a lot of Android framework developers and designers at Google did a great job with Android. A number of them is referenced in this post.
The end, finally
That’s it, folks. You now have all the information and tools to write some kick ass Android apps! Well, not really: you still need a great Android UI designer, but that is a topic for another post. But you should definitely be ready to write your first Android app.
If I’ve missed any great resources, please let me know in the comments, as I plan to occasionally update this post.