Ask the Dev #6 – Andrew Xie, Developer of the Apex ROM
Ask the Dev is a new weekly series in which we sit down with an Android developer for an interview. In addition to our questions, we love to hear from our readers. Be sure to follow us on Twitter and circle us on Google+ and we will put out a call for questions every Monday.
In the sixth installment of Ask the Dev, we sat down with Andres Xie, developer of the Apex ROM.
1. Tell us about yourself and what you do.
Since graduating with my B.S. in electrical engineering in 2010, I’ve been working full time for a local technology company. We manufacture and sell home security equipment. My job title is ‘IT and R&D manager’. Basically, I do all the IT work for our 50 and ever increasing number of employees, as well as oversee some projects that our developers are working on. It’s a pretty nice gig, especially for a 23 year old fresh out of college, but can also be quite exhausting and cuts into my Android time. A guy’s gotta eat though, right?
2. What is your favorite thing about developing?
There’s a great feeling of pride and accomplishment when you see your work manifested in the final product, regardless of whether it’s an app, theme, or ROM. Developing is fun for me because I have a deep interest in Android, but the most rewarding thing for me is knowing that I’ve impacted thousands of users by enhancing their experience with their phones. Even though I’ve been doing ROMs for a while now, sometimes I’m still amazed when I just stop and think, wow, there are thousands of people all around the world running my ROM on their phones. That’s probably my favorite thing.
3. Why did you want to create ROMs? Were you disappointed with the stock experience?
I actually started off with theming Peter Alfonso’s Bugless Beast ROM on the original Droid. Froyo was pretty bland aesthetically, and I had ported over many themes from the Nexus One to the Droid. I then created a themed version of BB, with some additional apps and tweaks thrown in and I had my first “ROM”.
However, I think my first real big accomplishment came with the Droid X. That was really the phone that revealed Motorola’s locked bootloader policy to the US (the Milestone was locked, but most of us here didn’t care). I was a bit disappointed in Blur, its aesthetics, and the sheer amount of bloat that came with the phone. That’s when Apex was born. It began as a Froyo ROM, with GB aesthetics, and as my skills and knowledge grew, became a hybrid Blur/AOSP ROM (using Blur as the base, but compiling the majority of apps from AOSP and CM7 source code).
With Apex, I felt that it finally let the device perform at the level it should have out of the box. Apparently many agreed, as there were well over 20,000 downloads of V 1.4.1 for the DX.
During my work with Apex, I got more and more familiar with AOSP, and was drawn towards the Nexus line of devices. I left VZW and bought a Nexus S on T-Mobile. I didn’t do much work for the NS since by the time I got it, development was already very mature and there were so many great ROM choices around, I was quite pleased with the device and didn’t see the need to build my own ROM. Once the Galaxy Nexus came out, I immediately moved to that device. Since the development for that device was brand new, and I was still very interested in expanding my knowledge of AOSP, I resurrected the Apex name and began work on the ROM for the GN, eventually moving to both the GSM and CDMA variants, as well as the two Nexus S devices.
4. What are you currently working on?
It’s been a month since I last updated my ROM! However, I’m still working on Apex for the GN/NS so don’t worry! I hope to finish some features a lot of users have requested (customize the softkey layout, fix the torch toggle, option to hide softkeys, etc.) and I’m also waiting on Google to push 4.0.4 to AOSP. Due to increased responsibilities at work, I’ve been a bit idle on Android, but I’ll get these things done soon!
5. How long did it take you to learn create your first ROM?
Creating my first ROM actually wasn’t too difficult. Back then, I wasn’t working with source code, but was more of a ROM “arranger”, meaning, putting the right APKs in the right spots, and the right scripts in init.d, xbin, etc. I feel that’s probably how a lot of ROM developers started off. All that requires is an understanding of the way the filesystem is laid out. Theming was similar. Once I figured out an APK was just a ZIP, it was really child’s play to unzip it and swap out the images.
For tougher things like decompiling apks to edit XMLs, or writing the updater scripts, I used the wealth of knowledge available on the web at various forums. Once I got to working with AOSP, I found resources from Google themselves, a great wiki at CyanogenMod, and lots of advice and support from fellow developers, especially kejar31, who really helped me with wrapping my head around how to manipulate AOSP code to grab the correct resources from Motorola’s framework and produce a working APK.
Now, there’s a wealth of information on github with open source projects like CM, AOKP, Gummy, RootzBoat, etc. These developers are basically sharing their solutions in code, for anyone to see and base their own solutions off of (or even cherrypick). Every time I go to work on Apex, I feel like I learn something new.
6. If you could have an app do anything, what would it do?
That’s a tough question. There are so many products and services that we all use and rely on that there could be any number of answers for an app that masters those things. However, I’ll stretch the definition of app here a little and say that I’d like for Google to create/require an “app” that all OEMs would have to include with their devices that would allow you to toggle their overlay on and off. That would be killer.
7. What are your thoughts on the “fragmentation” problem in the Android world? What do you think Google can do to fix it?
Well, fragmentation is real. Even months after ICS has been released, we’re still seeing devices announced at MWC running GB. Is it as awful as iFans would like you to think? Probably not. Most apps work on any 2.2 and higher device, which is an overwhelming majority by now. I think that Google could possibly help by supporting more hardware initially with its new versions of Android (rather than just the Nexus devices), but really, the onus of the responsibility is on the OEMs to update their devices in a timely manner.
8. What does your current Android family consist of? What are some of your former devices?
Currently, I own (from oldest to newest): Motorola Droid, Motorola Droid X, Samsung Nexus S, HP Touchpad, and Samsung Galaxy Nexus. I used to own an original 7” Galaxy Tab, but I swapped that with imoseyon for his iPad, and I sold my HTC Sensation to a coworker.
9. If you could have a electronic device available, what would it be?
Tough to say, since I think my phone needs are covered until the next Nexus. I’m saving up right now for an Ivy Bridge rig once that comes out. I guess I would like one of those huge borderless 3D LED super TVs, or maybe a fully specced out Sony Vaio Z, but overall, I think I’m in a pretty good place with my devices
10. From your Twitter feed, I can tell your a pretty avid sports fan. Sadly, it also looks like your a Kentucky fan. As an Indiana fan, I must say ‘We beat you!’ Any predictions for March Madness? Thoughts on Linsanity?
Yep, I’m a big Illinois and Kentucky fan when it comes to NCAA, and a Bulls fan when it comes to the NBA. We don’t really like Indiana here in Champaign, and that last second shot against UK didn’t have any positive effect on my opinion. But I foresee this year’s Wildcats to go deep into the tourney and contend for the national championship. Cal’s first year he got to the elite eight, last year we got to the final four, and this year’s even more talented team should be able to find similar success.
I’ve known about Jeremy Lin since his senior year at Harvard, and watched that game when he dropped 30 on UConn. I think what he’s done this year with the Knicks is amazing and a great motivation for anybody to just keep working hard at your goals and taking advantage when the opportunity presents itself.
11. Where can we keep up with you?
I’m on Twitter constantly. You can follow me @bigxie for ROM updates (not too many lately) and other hopefully amusing tweets. I also try to be involved in all my ROM threads, especially immediately after a release. But definitely the easiest way to contact me is via Twitter, and I try to respond to most of the questions I’m asked on there (though by no means is it a great tool for troubleshooting, leave that to the forums!)
From our readers!
1. What was your first ROM? What kind of features did it add?
My very first ROM was called ‘NexBeast’ and was a themed version of Peter Alfonso’s bugless beast for the original Droid with manup’s NexTheme. I also included some extra niceties like themed flashlight and ringer widgets and some performance tweaks. It was very, very basic, but surprisingly popular too. I credit its success for motivating me to continue to learn more about Android and keep building ROMs.
2. What’s the most difficult bit in developing a ROM?
Building directly off of AOSP code really makes almost any feature imaginable possible, so the most difficult aspect there I would say is having the aptitude to program said features. More generally, however, I would say one of the more difficult aspects of ROM development, especially if it’s a fairly popular ROM with a large user base, is taking all the suggestions and requests of your users and separating them out, deciding which ones are plausible, good, great, junk, etc and trying to appease the majority of the users while maintaining your own sanity.
3. What are your suggestions for up and coming developers?
Let your passion be your motivator. Keep learning more about Android, the methods for modding certain aspects of the system, and how and why everything works. Sometimes you may be compelled to take shortcuts and borrow the work of others (which is fine if you have permission), but always with the purpose of teaching yourself new things. Don’t hesitate to ask other developers for help and advice, you’ll find that most of them are very nice! And always have fun!
4. Any exciting features coming in your ROMs?
I’m currently trying to incorporate some highly requested features, such as hiding the softkeys, modifying the order of the softkeys, and an integrated torch toggle. Of course, with 4.0.4 on the horizon, there’ll soon be plenty of work to do updating Apex to 4.0.4 as soon as that’s open sourced.
5. What’s your current dev computer?
I traded kejar31 my Xoom for it, actually. It’s an older Phenom quad core, 4GB of DDR2 RAM, 500GB hard drive, running Ubuntu 11.10. I actually have it hooked up to my TV in my bedroom (secondary job of being an HTPC) and mostly just remote into it from my main desktop or even sometimes at work (shh don’t tell!). With these specs, it still takes almost 50 minutes to compile ICS from a clean slate. The plan is once I update my primary machine to Ivy Bridge, I can allocate the Phenom II 940BE I’m replacing to building.
6. What do you like to do in your free time?
Pretty standard fare. I watch a lot of basketball, play some videogames (really looking forward to Mass Effect 3), hang out with friends, listen to music, play with my cat, go for joyrides in my car, and every now and then go to the gym. I’ve been to a lot of college games here at Illinois and a couple in Lexington, but never an NBA game. Hopefully I can make it to a Bulls game in the near future.
7. What is your favorite type of music?
I listen mostly to hip hop, though I enjoy almost every genre. In my library, I’ve got artists ranging from Yo-Yo Ma and Louis Armstrong to Drake and Dr. Dre. But I’d say probably 50% of my library is rap. Recently, I’ve been listening to some more electronic stuff, like techno and dubstep. Jury’s still out on that.