On Sun, 27 Apr 2014, Attila Lendvai wrote:
what are the downsides of connecting to the NDK (android C API)? how much of android is not available through the NDK?
When I tried using Lisp on Android a couple years ago, the going was rough to say the least. Today, there are a handful of Scheme implementations, Maxima, and other Lisps on the Play Store that seem to work pretty well. Unfortunately, time is short lately.
I did get a bit of experience with Android and the NDK. NDK applications are quite feasible, but they are discouraged by Google and so the documentation and tooling is less refined.
Basically, "Android" is a heavily modified Linux distribution with a Java-based desktop interface. So C/C++ and other NDK programs and libraries will run much as they do on any other Linux distribution.
Android uses a custom Java VM (Dalvik) to enable application portability across different architectures. NDK programs must be compiled separately for each supported architecture, possibly with multiple architectures in an APK (application package).
https://developer.android.com/tools/sdk/ndk/index.html#Contents
So if you have your own GUI library (say using OpenGL ES), you can write the whole application as a "Native Activity".
https://developer.android.com/reference/android/app/NativeActivity.html
Or run your apps on the command line using a program like Terminal IDE.
For everything else, you can use JNI bindings. The coding style is similar to using FFI bindings to talk to C libraries. On desktop systems, there are often conflicts between the GC mechanisms used by CL and Java, so this would be something to watch out for on Android as well.
The JFLI and CL+J projects were attempts at CL bindings to the JNI. I haven't looked whether the JNI offered by Dalvik would require any modifications to these projects.
CCL has an implementation of JFLI and ARMv7 support, so it might be a viable solution on some tablets.
http://trac.clozure.com/ccl/browser/trunk/source/examples/jfli http://trac.clozure.com/ccl/wiki/ReleaseNotes/1.9
- Daniel