Best Resources for Android Development
Whether you’re a seasoned professional or just beginning with Android development, this list of resources (including tools, libraries, and blogs) is useful for any developer or team on just about any project, big or small.
OkHttp, a product of Square, is an open-source HTTP and SPDY library for Android and Java. Android comes with two existing HTTP frameworks (HttpURLConnection and HttpClient) but over various Android OS versions have been rife with bugs that can make any normally-sane developer go nuts trying to nail down an HTTP problem. Fortunately, OkHttp solves many of the problems. OkHttp is built upon HttpUrlConnection — so the API should be familiar — but stays up-to-date with fixes from the Android codebase, meaning no compatibility nightmares with older OS versions. Oh, and if you’re looking for something that implements the Apache HttpClient API, that exists as a module: okhttp-apache.
Check out OkHttp
Retrofit, also a product of Square, is an open-source, type-safe REST client for Android and Java. The Android platform doesn’t lend itself much to simple client-server interaction when it comes to APIs. Retrofit aims to provide that, at least for REST requests. Retrofit supports quite a bit of customization, but out of the box will use GSON for JSON-parsing and saves a ton of time building form and multipart requests by simplifying it all into a straightforward interface. Bonus: Retrofit will use OkHttp if it’s available.
Check out Retrofit
Alright, this is the last Square open-source project I’ll list here, I promise (but there are plenty more you should check out). Picasso is an image downloading and caching library sporting a fluent interface for ease of use. Picasso has many options for customizing how it handles the downloaded image (including things like resizing and cropping, as well as providing an interface allowing you to transform the image how you see fit, such as performing a circle crop on it). Picasso will download the image (if not cached) and load it into the given target, which can be anything implementing the Target interface or in its simplest and most common usage, an ImageView.
Check out Picasso
AndroidViews.net is a site that aims to bring together many of the different tools, libraries, and resources into a browsable index. Unfortunately, there’s no search functionality and the site definitely isn’t comprehensive, so you’ll probably also want to check out the next resource on my list…
Check out AndroidViews
If there’s any mailing list you should ever want to be on, this is probably the first. Android Weekly is a newsletter of various musings in the Android development community, including new libraries, tools, blog posts, and more. If you don’t have email (is that a possibility?) or you just don’t like the prospect of giving them your email address, you can always check the site every Monday for the latest issue.
Check out Android Weekly
Android Niceties is a great collections of well-designed and thoughtfully-developed experiences in the Android ecosystem. Android Niceties has covered great, from major brand apps like Duolingo, Expedia, and Etsy to perhaps previously lesser-known apps like Muzei, Timely, and Pocket.
Check out Android Niceties
Touting itself as the “Complete Android Fragment & Activity Lifecycle” (I haven’t completely verified this, but it looks right…), this graph outlines the flow of Activity and Fragment in relation to user interaction within and outside of your application.
Check out Android Lifecycle
Android Asset Studio
This site has a myriad of tools built into it to simplify the creation of various Android-related resources including launcher icons, notification icons, navigation drawer icons, and more…
Check out Android Asset Studio
Android Holo Colors Generator
Built upon the Android Asset Studio, this tool simplifies the previously design-resource encumbering process of creating custom Holo-style Android widgets. Just plug in a color, specify your action bar theme, and get going!
Check out Android Holo Colors Generator
DPI Calculator for Android
It is what it says it is. This tool is simple and elegant, allowing the user to plug in a number at any density (yeah, even tvdpi) and will calculate the value for any other density. This one’s a keeper for sure.
Check out DPI Calculator for Android
Android Developers YouTube Channel
This one might seem a bit more obvious, but maybe you’re not subscribed to it. If you aren’t, you should be. Google is shifting its focus for Android (and the rest of its company, I hear) to be more design-oriented. This is and almost certainly will continue to be where you can find out much more about Android development, design, and UX — old and new. I also recommend the Google Developers channel if you’re into that kind of thing.
Check out the Android Developers YouTube Channel
Thinking about switching to Gradle and need some help with your dependencies? Have been on Gradle but just want to simplify the dependency search? Look no further than Gradle, please. Plug in the name of your favorite library (heck, I dunno, maybe OkHttp, Picasso, or Retrofit?) and Gradle, please will spit out your dependencies “compile” line ready to go. If you’re looking for something a little more complex, you can always check out The Central Repository. Gradle, please also happens to provide all of the standard Google-provided dependencies at the top of the page for your convenience.
Check out Gradle, please
… and last but certainly, not least:
android/platform frameworks base
You might be wondering why I’m listing this. Well, I can’t tell you how many times I’ve been through this codebase. I don’t generally sift through on my local machine; rather, I peruse the Android source on Github’s website. Typically, I’ll be wondering how something works (like the complexities of ListView/AdapterView, or the new hotness that is TransitionManager) and want to check it out — this is the best place to really dig in. Oh, and in case you’re still feeling adventurous, there’s also the support library source to browse.
Check out android/platform frameworks base
Happy developing, everyone. Please, share your favorite resources in the comments!