Finally, Android users will get a proper astronomy planetarium app.
What developers have to contend with working with Android:
http://www.southernstars.com/product...afari_android/
Quote:
The main challenge was that native iOS apps must be written in C, C++, or Objective-C; whereas Android apps are written in Java. Fortunately, SkySafari's core "engine" code was already written in C/C++, and in 2010, Google offered a native development kit which allowed us to recompile that core engine code for Android. All of the code which computes planetary positions, reads star and deep sky data out of the database files, and draws the sky chart using OpenGL, is line-for-line identical to the code in the iOS version. This saved us from having to rewrite more than 168,000 lines of code in Java, and is really what made SkySafari for Android possible in the first place.
The other part of the app is, of course, the user interface - all of the buttons and menus and switches you can touch to control the app. While they might appear vaguely similar to those in iOS, the Android APIs (application programming interfaces) to those controls are completely different from those in iOS. For one thing, they're all written in Java, not Objective-C. So this part of the app was a complete, 100% rewrite.
Our first Android project was developed in conjunction with Sky & Telescope magazine. It was the Android version of the S&T SkyWeek app for iOS, released earlier this year. This was a relatively simple Android app, with a minimal user interface. This allowed us to concentrate on porting our underlying C/C++ engine code to Android, and prove the concept. Rewriting all of SkySafari's user interface in Java has taken a lot longer - and is still a work in progress.
It's fair to say that we ran into all the same problems other iOS developers complain about when porting to Android. Google's Android developer tools (based on Eclipse) are generally a lot slower than Apple's (Xcode); the tools are buggy and needlessly complex. Some things that are easy in Xcode - e.g. building multiple configurations of the app from the same source code base - are nearly impossible to do in Eclipse. The Android hardware and OS "fragmentation" problem really is a problem - there are a lot more possible combinations of hardware/OS, etc. that we needed to test on Android than for iOS (which is rigidly controlled and quality-tested by Apple.) And there was an awful lot of really tedious, mundane JNI (Java-Native Interface) code that we needed to write, in order to glue our C/C++ engine to the Java user interface.
But all of that is just part of the job of a software engineer. You asked for SkySafari on Android. So we did it.
|