On Tuesday, 26 November 2013 at 09:53:07 UTC, Chris wrote:
On Monday, 25 November 2013 at 22:32:26 UTC, Joakim wrote:
Next, getting this minimal app running on Android/x86. It turns out there is some support for building executables directly in the Android NDK, just undocumented, though the docs are fairly bad generally.
Whoo, I just got the above "hello world" app to run on Android/x86 4.3! :D I just compiled the object file with dmd patched to take out _d_dso_registry and using the invocation above, then linked it with the gold linker, Android libraries, and flags that the Android NDK uses, and ran it from a terminal in an Android/x86 VM. I was not looking forward to debugging arcane ABI issues and it looks like I may not have to. :) I think I'll just use this pure native route to port druntime for now.

Interesting. Johannes mentioned that the main app should always be in Java so it goes through Dalvik. I've done some JNI-D stuff already (only a proof-of-concept command line app though). I wonder what's the best way of porting D to mobile OS's (mainly Android and iOS).
That is what the docs say if you want to build a native Android app, presumably that you distribute through the Play Store. But you can always build a native app for your own local dev build of Android, at least for porting purposes.

But look at the test-libstdc++ sample app in the NDK: they actually build it as an executable, not a shared library. I haven't tested yet if that's a mistake or if it will actually work. In other words, I don't know if they enforce the shared library approach, whether technically or through some Play Store certification process, but it certainly is the officially blessed approach.

What JNI-D stuff have you tried and on what platform, linux/x86? I'll try the shared library approach on Android at some point and report back.

Reply via email to