One of the cornerstones of my Android development is that I want to write to what the majority of users are running on. Under most circumstances, this is vanilla Android in one of its many legacy incarnations that are still floating around on the market.
Honestly this is a pretty fair approach. Especially if you’re invested into the Google ecosystem, want to distribute and market on Play, and want to hopefully attract the largest possible user base you can.
There’s this other side to Android that’s always poked, prodded, scratched, kicked and nagged at me to just do what I please with it. Unlock the bootloader, root the device, install custom ROMs and have a field day. These days, it’s extremely tempting to do so with superior hardware and a slew of ROMs like Ubuntu and Cyanogenmod. Not to mention all of the fun programs you can run on a rooted device!
I tried for so long to resist doing all of that. After all, custom ROMs don’t compose a majority of the market share of Android and I’m not really keen on supporting several ROM variants for my programs. However, despite my best efforts to the contrary, my inner geek took over and I went to town on my Nexus 7. Unlocked bootloader? Check. Custom recovery image? Check. Rooted? Check. Cyanogenmod 10.1? Check.
But then something strange happened. I was stuck. I’m not going to argue that CM didn’t grant me the power to do whatever I wanted to do to the device and I was able to make it look quite aesthetically appealing (more than it does with vanilla). I was left wondering how the hell I was going to get programs and use it as a work device like I did before (which was flawless).
The first obvious problem here was the Google ecosystem integration; you’re immediately divorced from it. I’m already tied down pretty well to it having invested a bit of money into programs and media and a developer’s license to distribute my programs on Play. So I needed to get those apps back on the device somehow. Turns out there’s an archive that you can download and install via the recovery image that puts the Google programs back on the device. Cool. So I did all of that and rebooted the device. Turns out that CM 10.1 has some serious issues with the AOSP keyboard. Literally, in the five minutes I had that running, I’d seen more ANRs than I ever have in all the time I’ve owned the N7 (five months now). Even worse was that no keyboard seemed to want to function. I even went through the effort of installing a second arbitrary keyboard program and it wouldn’t work. If I removed the Google programs, the device functioned properly. Unacceptable.
Setting aside the withdrawal syndrome you experience having been removed off of Google’s life support system, there’s the other obvious problem of installing software. Out of the gate, there’s no aggregate store/repository to get programs from. You have two choices here: either find such a program and install it manually or hope, and I mean seriously hope, that you can find an APK for the program you want to use and manually install it.
The proliferation of “app stores” or, in a more non-copyrighted way, central program repositories for mobile devices, like Play, has made the concept of secondary installation methods a bit uncommon even to the point of obscurity for most people (most people meaning your average user). Thus, while independent distribution of your programs for Android is entirely possible, I don’t suppose it’s the most feasible and user-friendly method of doing so. Have you ever tried to explain to a non-technical user how to manually install an APK on their device? I’ll give you three guesses how that conversation ends up and I can hint to you that it never ends the way you’d hope it would.
The underlying problem here is that because repositories like Play or the Amazon Store are so prevalent in the mobile space, the proper APK isn’t front-facing to the user unless they’re technically savvy and can expose it. Otherwise, users would be, and in fact are, non-the-wiser about the entire process. On top of that, most developers who choose to distribute their programs in these channels either refuse to or simply forget/don’t release the APK independently for other users who wish to have it in that way.
And this is where most custom ROMs leave you. You’re stuck in the weird limbo place where you now can do whatever you want with that Android device in your hands but it almost removes any type of practical usage from it.
I think my overall takeaway here is that a custom ROM isn’t really a great solution for average users who just want the device to work as they’d expect it to. I’m not really sold on them either just for the simple fact that they take away the vanilla experience which is something I need.