Tuesday, July 31, 2012

Worth updating to Android SDK Tools 20.0.1: fixed multiple emulator instances, and VirtualBox too?

Android SDK Tools 20.0.1 didn't download for me via the Android SDK Manager. (This was a week ago so it might be updated now.) I had to uninstall SDK Tools from Android SDK Manager, then manually install 20.0.1 from http://developer.android.com/sdk/index.html. I should mention I'm running Windows 7 64-bit.

It was worth doing the manual update because the biggest regression, inability to run multiple emulator instances simultaneously, was fixed. Phew. I was getting tired of having this decent PC with tons of RAM--which I had upgraded specifically for running virtual machines and emulators!--and not being able to run multiple emulator instances.

Then surprisingly, although maybe completely coincidentally, when I tried running an Ubuntu guest on VirtualBox, it was really snappy. I didn't remember it being this fast before. I do remember having the same Ubuntu guest in the past be somewhat slow, with some input lag and just overall sluggishness, and that turned me off from using it very much. I also remember reading something to do with VT-x being blocked by Intel HAXM.

But now VirtualBox is fast. Fast like using HAXM with Android running an Intel Atom image. I can think of a few possible causes:

  1. Android SDK Tools 20.0.1 and Intel HAXM 1.01 finally behave well with virtual machines. VT-x is no longer blocked by the Android emulator, allowing VirtualBox to take full advantage of the virtualization speedups.
  2. Or, maybe the Ubuntu VM image was sitting on some bad sectors on my SSD. It somehow moved to good sectors, speeding up the VirtualBox performance.
  3. Or, I could be getting old and everything seems fast at age 25.
Whichever it is, I'm really glad I can make full use of my development machine now when it comes to VMs and emulators. My 16 gigs of RAM are smiling.

Monday, July 23, 2012

aww: reddit pictures widget

Today I'm releasing a new Android widget called "aww". It shows reddit pictures on your home screen. The app name comes from a popular subreddit called /r/aww which shows pictures of cute things that make you say "aww" (mostly pets). The widget lets you show pictures from any subreddit, not just /r/aww.

I made the widget because I felt a need to easily view content and decorate your Android phone with reddit content. My girlfriend had gotten a new Android phone, and while she said she enjoys my reddit is fun app, I knew reddit's comments and commentary weren't really her thing. But once I installed "aww" on her phone, she suddenly got very interested in the picture subreddits. Her favorites are /r/aww and /r/earthporn (work safe). Most importantly, she doesn't have to launch a new app just to view the images; they're right there on her home screen.

So, the target audience of this widget encompasses true redditors and lurkers alike. It brings the content right to your home screen, without the need to sift through the post titles and the vote scores and drown in the comments, if you don't want to.

Put another way, it's the laziest way to view reddit pictures on your Android device.

See more screenshots on the Google Play Store app page: https://play.google.com/store/apps/details?id=com.andrewshu.android.redditaww

Monday, July 16, 2012

Working around Android 4.0.3 emulator crash, with x86 and GPU acceleration, on Windows 7 64-bit

So this Android SDK tools bug has been affecting me since around revision 18 when they introduced GPU emulation. Current revision is 20. I've been following Android issues 28515 and 28601. The issue is that trying to create certain sizes of emulator on Windows 7 64-bit break, especially with GPU acceleration enabled. Phone-size emulators work, but it's been a huge pain testing tablet-size because my only option was using an unaccelerated (read: extremely slow) tablet emulator.

I was finally able to come up with a solution leveraging some of the comments in issue 28601, plus additional trial and error. I posted the solution in issue 28601.

Here it is: Create or edit an AVD in the SDK Manager with these settings:

Target: API Level 15
CPU: Intel Atom x86
Resolution: custom 1280 x 800
* Hardware Back/Home key: no
* Abstracted LCD Density: 160  **note: 320 makes phone layout, 160 tablet
* Keyboard lid support: no
* Max VM application heap: 48
* Device ram size: 512
* GPU emulation: yes

And it works quite well. There are a few graphic glitches and artifacts, but it runs smooth as butter on my machine. Most importantly, it doesn't crash when I enable GPU emulation and Intel x86 CPU! Never again will I rue the tablet testing cycle. (Unless the next SDK tools update breaks it again.)