Monday, April 15, 2013

Android Port

I'm exploring an Android port of WhirlyGlobe-Maply.  With the recent release of Maply, I'm getting a lot of inquiries about Android support.

Like this, but more Android-y
These are fairly serious companies asking about it.  If I had some way of simply dividing the cost among them, I suspect we'd already be there.  But that's not how consulting works or how corporations think, so we get to do this the hard way.

How Would it Work?

The low level rendering engine in WhirlyGlobe-Maply is C++.  I didn't plan it that way, I just like C++ for tossing data around and it meshes nicely with OpenGL.  All the higher level interaction code is Objective-C as you'd hope.

On Android, they provide the NDK, an interface for writing native C/C++ and running it on Android devices.  It looks pretty good and the OpenGL ES support looks solid.  The Java Native Interface is an exercise in pain, but it seems dependable.

The plan would be to port the low level rendering engine after a little restructuring on the iOS side.  Then we'd rewrite the Component level for Android, basically all the UI and object manipulation.

Android users would only see the nice, friendly thread-safe higher level interface and we'd hide all the crazy stuff only I understand.  Just like on iOS.

About the Money

I'm a consultant and I give WhirlyGlobe-Maply away for free, so I'm not going to do this for the heck of it.  It needs to be paid for.

A local mapping company, Gaia GPS, is interested.  They only need Maply, logically enough, so we'd just port the pieces to support that.  Full WhirlyGlobe-Maply support would have to follow based on other clients.

Their support, assuming the numbers work, would get the core toolkit ported, but it wouldn't be enough for a full Android release.  I need other clients to step up.

Update (5/14/2013)


The first try fell through, as deals do.  Now I'm shopping it around.  If you've got a lot of money burning a whole in your pocket, let me know.