This is an article for developers, or those of us that play developers on TV. If you aren’t either, you may want to skip this one…
With Google offering its own form of Ubuntu to its employees, I really wish Google would offer a compiled branch of Ubuntu specifically for creating and building both Android system, and Android applications.
Granted, Google dodged a bullet with Java and Oracle. You still need Sun Java 6 JDK to even compile Android. And no, OpenJDK won’t do. Considering Google just beat Oracle in the lawsuit regarding Java vs Android, I doubt it’s a priority to switch either. What really surprised me was how Oracle didn’t grandstand on that point at trial, but I digress..
I think it is in Google’s interest to offer a stable build environment for everyone that offers consistency. I’ve had to spend hours modifying build dependencies, just to tune my version of Ubuntu 12.04 to get Android 4 builds to compile properly. To my shock, Google still recommends Ubuntu 10.04 LTS! I’d say a good 25% of the computers in my pad can’t even run Ubuntu 10.04!
Even minor differences in gcc can cause huge problems in testing and regressing build issues. And, gcc is rather easy to explain, some of the build dependencies are way, way out there!
To Google’s credit, they do have things working on 12.04 LTS now, albeit still not the recommended configuration profile. It took reading, nay, pouring through many emails on many lists, from many Googlers, to get that down properly. Still, want to do something creative, like splice in someone else’s modern code? Be prepared for that make command to come to a grinding halt.
While I can see all the reasons that developers complain about maintaining Android firmware, those multi-million dollar corporations (many of which are multi-billion) have virtualized Xeon plenty-cores that can compile Android all day long in finely-tuned VM environments. They can probably churn out a Jelly Bean build in less time than it takes me to write this post.
In a way, Google should offer a build kit to those that don’t have eleventy billion dollars. It would make it a lot easier for small teams to collaborate (especially when not locally-centralized) on Android device and application development. By ensuring everyone has the same build environment, centrally-managed and patched regularly, both Android system and Android apps would be more stable, and more agile.
That said, I doubt it will happen. I think in the longer run you’ll see Android take development inside of Android, and eventually… versions of Android that can actually build Android apps, and eventually Android system. It’s not hard to envision that, especially since kernel unification took place with the mainline Linux kernel.
Oh, and Ubuntu is far from perfect here. I had builds fail on me this morning because they ran out of disk space. Why did I run out of disk space? Because Ubuntu was keeping the locked files from each make clean command in an invisible secondary trashcan (~/.local/share/Trash… Google it and you’ll see my pain in the posts from others). It then took me 30+ minutes to research how to bypass the bug and delete the phony trash bin. And no, sudo rm -rf was not the solution… I had to reboot three times and attempt risky permission edits that could have locked me out of my machine. Ugh, long night, but valid rant. Good night everybody!