Missing com.google.android.maps

Thanks to this post, and a whole heap of other stuff, I finally sorted out a Google Maps problem on my Nexus One.

When trying to install some apps, I would see this error message in logcat:

requires unavailable shared library com.google.android.maps

I had the Google Maps app installed and working, but that didn’t fix the issue. It turns out, I had to add two other files and restart the phone. I found those files in the google zip from Cyanogenmod. It took a little fiddling, but I was able to use these instructions to remount /system in write mode. First step was to take the following two files from the google apps zip (gapps-hdpi-20101114-signed.zip) and put them onto my sd card.

/system/etc/permissions/com.google.android.maps.xml
/system/framework/com.google.android.maps.jar

Then to load them onto the phone, I opened the terminal emulator and ran:

su
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
cp /mnt/sdcard/
com.google.android.maps.xml /system/etc/permissions/
cp /mnt/sdcard/
com.google.android.maps.jar /system/framework/

Then after I rebooted the phone, I was able to install apps that depend on Google Maps. I can now check bus and train times, and do all kinds of other cool stuff with maps! :-)

Note, this is only relevant if you do not want all Google Apps installed. I only have the map application installed as I don’t sync my phone with any Google services. If you’re using all the Google Apps, I suggest reinstalling as these steps should not be necessary.

To add a little colour, here’s an unrelated picture from flickr, courtesy of epSos.de.