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.