A Cat's Android Development Primer
Today, Google launches Android Studio 1.0, a tool that has been in various testing stages since it's announcement at 2013's Google I/O, which is the company's annual developer conference. I/O is more than just devs sitting around in a room, though. It's going the way of E3 and any other once-small-time-now-media-spectacle type of events. Unlike events like E3, however, at I/O everything is about Google, which isn't very hard to do, since Google is about damn near everything these days. Love them or hate them, they're in about every part of our lives now. With Android devices owning 83% (or, depending on source, that number can be as high as 85%, but that's the Inquirer) of the market share for mobile (this encompasses all devices, usually including crappy free phones that barely work, versus both iOS devices and Windows Phone), more and more studios are realizing that it's worth their time to develop for Android.
Originally, I had another idea for this week's column, but then I came up with an idea on how I could make it even better, so that's on the backburner now while I wait for a response from an indie developer. Then, I thought that maybe I could do something similar to David's column yesterday, where he discusses his journey into owning a Windows Phone. While toying around with that idea in my head and cruising down my Reddit front page, when I notice a post from /r/Android that 1.0 of Android Studio is finally out. I've spent a lot of time researching where to go and what to do in regards of becoming an Android developer, so now seems like a great time to share that knowledge. If you're wondering if I am an Android developer, well, the answer is no, mostly because I kind of have my dream job, which means that in my spare time I do things like cook complicated meals, do crazy amounts of exercise, and sit on my butt playing video games while watching TV. After my piles of research, I dug deeper until I noticed that it was pretty unanimous amongst seasoned developers that newbies like myself need to take a step back and not just begin at the end.
While I have yet to achieve my goal of developing for Android, I know exactly what needs to be done to succeed with that goal. I wouldn't say I'm done with it, but I just have far less motivation for getting there. However, if I were to pick it back up, I'd start back at the beginning, which is what we're going to discuss today. So, here it is: A Cat's Android Development Primer.
What is now the Google Play Store, back then was called the Marketplace, which is where you'd virtually go to when you wanted to have new things for you phone. From wallpapers to music players, the Marketplace had that. Now, with the Play Store, you can add in ebooks, digital music, video, and more. The place where you go to for Android apps has gone through the growing pain that the current place you go to for Windows apps is currently experiencing. What people love about the Apple ecosystem is that it's tightly controlled. Every app submitted to the iTunes store is checked over by someone who works for Apple, who will then either reject it or give it the okay to be placed in the store. What's now the Play Store kind of let everyone in at first, because hey, it's Android so you're free to do what you want! This brought on the problem, early on, of bad apps getting into the store. Couple that with people getting apps from non-trustworthy sites and suddenly you have people who have phones full of viruses and whatnot.
I've never had a virus on my phone. I approach app installment the same way I do anything else on the internet. If you're questioning the content, why are you moving forward? If you have someone in your family who asks you to help them make their Yahoo work better, I'd suggest the Apple ecosystem to them, because they're likely to hear from a friend of a friend of a friend to go to some dubious site and install something they shouldn't. Even considering how hard this is these days, Android still has a reputation of being riddled by viruses. I'd say this is mostly untrue. Sure, there are likely some cases out there, but those are the exception and not the rule.
Another common misconception about Android is that it's difficult to develop for. Google has been working on addressing this issue for quite some time, and with Android Studio, they've definitely been doing what they can to help alleviate that pain. The issue with Android, however, is that there are plenty of low-end phones on the market. If you go into development, you'll need to decide who you want to develop for in the Android market. There are a large majority of phones still using Android 2.2 (we're up to 5 now, and 2.2 was released in 2010), meaning that developing for that version of Android versus modern Android is practically a completely different system. However, don't let that discourage you, as not everything made for Android 4 or higher will have backwards compatibility issues.
The third misconception I'll address here is that people always say that Apple users buy apps, but Android users don't. Do you really mean to tell me that the larger majority of phone users out there do not buy apps? I have a hard time believing that. I bought a $3 app just last week. Generally, if I'm testing out particular use apps by using their free version, I'll buy the pay-for version or donate to upgrade to ad-free because I want to support the developer and I like the product. I've done this with Reddit News, Falcon Pro for Twitter, and Player Pro, to name some of my most-used apps. I'm also the type of person who doesn't use too many apps. Many of my friends have far many more apps that they use regularly, and quite often they are paid-for apps.
Tools and Sources
Now that the misconceptions are out of the way, let's get into how you can get into development. If you're on Reddit, here are a few subreddits I recommend: /r/Android, /r/androidapps, /r/androiddev, /r/learnrogramming, and /r/java. After you get going, check out /r/dailyprogrammer, as well, as you'll be able to work through daily challenges with the community there – each day throughout the week gets slightly harder! If you have no programming experience whatsoever, you'll want to step back and have a go with Python. If you're wondering why I would suggest learning Python over Java at first, the answer is simple. After plenty of procrastination research, I've learned that Python is the best entry point to learning a programming language, and that many fundamentals you learn through Python carry over to other languages. I learn best through hands-on experience, which is why I went with Learn Python the Hard Way. It's a fantastic resource, and if you use the web tutorial, it's completely free. This will let you see if you even jive with programming in the first place without a costly gate to entry.
Getting into Java without paying a ton of money isn't that hard, either. There are plenty of online universities and other schools that offer plenty of go-at-your-own-pace learning. Yes, I do have preferences, which are based both from research and experience. Codecademy is set up and structured rather nice, but the main drawback here is that it's mostly aimed towards web development. However, they do have a Python track if you just want a refresher course before getting into java. Udacity has expanded their courses to offer everything you'll need from an Intro to Computer Science to an Intro to Java Programming – all the way up to Developing Android Apps. If you really get into programming, they offer a Masters in Computer Science in conjunction with Georgia Tech. There's also a post on XDA Developers about getting into Android development, but it's a little outdated now (another decent, but outdated resource would be this thread on Reddit that has quite a few pointers, like a highly recommended video series). Still, there is plenty of good information on what to do over there. One big example is that they recommend Oracle's The Java Tutorials, which is a really nice online resource for learning Java.
Now, if you do know a little Java, you can skip some of the above parts and head onto learning the fundamentals you'll need for Android development. Just like Oracle wants to give you what you need to learn Java, Google wants to give you what you need to learn Android. A far prettier version of The Java Tutorials is Google's Android Developer reference site. In one convenient place, you'll have everything at your disposal to get going as a developer. However, in order to get to this part, you'll need to know the basics, which I've already listed above. Depending on your current programming skill level, how well you take to learning programming, and how fast you get through all of this (Python the Hard Way takes two months on average to get through), it could be a couple of years before you get to the point of diving into Android development. I don't say this to discourage you, but rather so that you set a realistic goal and don't get discouraged when you're a few months in and you haven't developed any apps yet. You can do this, but it will take time!
Android and Gaming
This year at I/O, Google announced what's essentially their version of a console, but far lighter than what you get with a Wii, Xbox or Playstation. What it can do is let you play your favorite mobile games on your TV, with a controller. It's pretty tempting, and has big names like nVidia behind it. When Android TV was announced at this year's I/O during the Keynote, most people, including myself, were pretty unexcited about the news until the part about gaming was shown. If you remember the failed Google TV, you'll understand why. If you don't remember it, well, forget I said it – hooray, Android TV! What Android TV does differently is that it will let you do things like stream Netflix (kind of what your Roku box, Apple TV, or even Xbox are already doing), but it'll also let you run Android apps. Because of this, you can take your mobile gaming to the big screen.
I don't play a ton of games on my mobile phone, but the very few that I own, I do enjoy. Maybe not that Max Payne game I purchased a few years back, but that's mostly because I couldn't get comfortable with the controls. The controls are probably one of the biggest factors that keep me from playing many games. I have a OnePlus One, which has by far the best hardware you can get for the price. It arguably is one of the best phones on the market. I bought it outright and use it through T-Mobile for an experience that's quite friendly to my collective monthly bills. It's considered a “phablet” - a word I kind of hate – which is a phone-tablet hybrid. It has a nice, large screen already, and it doesn't come with all sorts of carrier bloatware. Win-win all around! However, I just don't find gaming on it enjoyable, but that's the limit of mobile gaming, and not the phone. I think Android TV is a good solution for this.
Lookit how pretty Celtic Heroes is, you guys.
However, if I were more inclined to mobile gaming, the Plants vs Zombies series and World of Goo are hands down two of my favorite single player games. For the MMOG market, Celtic Heroes (which I've written about a few times) is really lovely. I honestly had no idea that a mobile game could look like that and thought the initial screenshots I saw of it were rendered. I was already planning on writing about them today in this column, but somewhere a few paragraphs above, I received an email announcing that their Destiny Engine overhaul is now available to iOS users. Y'all can see what I'm talking about, now, since you'll be on the same engine I am! It's a free app, and while there are in-app purchases, I haven't run into any gated content. Regardless of which ecosystem you've bought into, I recommend picking up Celtic Heroes.
I hope you've found this helpful! If you've gotten into Android development through other means, let me know what you did to get there!