May 3, 2013

[APK Teardown] Google Glass "XE4" System Dump - Are You A Typophile?

Despite not (yet) having Google Glass, I've managed to get a hold of a system dump, so it's time to have some fun for the day and see if Glass has any (more) hidden goodies for us. It'll also be fun to see just what makes Glass tick, and how the OS is laid out. APK Teardown is usually at its best when I have a previous version to diff against and, you know, when I've actually used or at least seen the software in question. I don't have any of those benefits for this teardown, so things could get interesting. Glass Vs. Android According to build.prop, this version of the Glass software is "XE4," so that's what I'm going to call it. "XE" no doubt stands for "eXplorer Edition." I wonder what XE 1 through 3 looked like? The device name is a very simple "Glass 1." Compared to the ridiculous code names we're used to with phones, this is a nice change of pace. Here's the /system/app folder, and boy is this familiar. The Glass "OS," if you can call it that, is pretty much Android 4.0.4 (give or take a few 100,000 build counts) with a few special APKs that make up the Glass interface. It reminds me a lot of Facebook Home or Windows 3.1. There's this underlying OS (Android) that powers everything and, most of the time, you aren't supposed to see it. All of the typical user-facing Android apps (Calculator, Contacts, Clock, Gmail, etc.) have been ripped out, but the core is just plain Android. Anything labeled "Android stuff" just seems to be the same 4.0.4 that we're familiar with, with all the non-English stuff stripped out, and maybe one or two extra permissions. The two exceptions to this are "GoogleTTS.apk," which is the Android 4.2 version of Google's Text To Speech engine, and "GoogleLoginService.apk," which, despite being labeled as "4.0.4," has some artwork I've never seen before: The top left one is called "android_make_it_google.png," the top right is "setups_bg_account.png," (a honeycomb setup screen?) and the bottom one is "android_gplus.png." Has anyone ever spotted these before? It's interesting that Glass is running on a version of Android that's over a year old. I wonder if they plan on eventually upgrading or if they're going the GTV route, and seemingly not caring about the base Android version. (GTV still runs Android 3.0!) The framework has been tweaked to make Glass look like Glass and not like Android, which means Glass APKs aren't going to easily run on your phone. I was really excited for a bit, though. Glass Could Use a Cleanup It's hard to be critical of a 0.0000001 version of a piece of software, but I will try my best anyway: Glass code currently seems like a bit of a disorganized mess. Normally I wouldn't dare question my Googley cyborg overlords when it comes to programming, but there are just a few things in here that bother me. This set of images (and all the supporting XML for them), is included in nearly every Glass app. That means there are twelve copies of this stuff floating around. Anything labeled "bar candy" is the Glass scrollbar, and probably belongs in a system-level location that everything has access to, like the framework. The same goes for things that would have a universal use, like the share button, "X" button, and the check marks. And this is just an example - there's duplicate stuff all over the place. I get the feeling they made one Glass app, and just duplicated the base stuff for that app over and over again for everything else. There's no other explanation for why the Bluetooth app contains things like camera libraries. I guess wasting space doesn't matter when you have 16GB of storage and almost no apps, but it just seems unnecessary. The "Glass Home" app is another thing that bothers me. This one app is responsible for the "Ok Glass" home screen, sure, but it's also handles the camera, settings, timeline, voice actions, email, and messaging. Shouldn't all this stuff be separate apps? The only Glass apps important enough to actually have separate APKs are Maps, Phone, and Handouts. This reminds me of Android in the pre-Froyo days when every app (Maps, Gmail, etc.) was bundled with the system, and the only way to update anything was to push out a full system update. Google spent a lot of the Froyo/Gingerbread era working on "decoupling" apps from the Android system and offloading them to the Android Market so that they could be easily updated, and to this day Google still occasionally runs into problems from this early decision. Hopefully Glass doesn't have similar issues. Maybe Glass is fine with one monolithic APK because everything is so simple, or because they are just getting started, or because there is no app store to speak of right now, but it just doesn't seem like the right way to do things.

No comments:

Recent Posts