On Friday, 2 June 2017 at 10:12:27 UTC, Joakim wrote:
On Friday, 2 June 2017 at 09:39:46 UTC, Petar Kirov
[ZombineDev] wrote:
On Friday, 2 June 2017 at 08:58:01 UTC, Joakim wrote:
On Friday, 2 June 2017 at 08:36:49 UTC, Dušan Pavkov wrote:
On Thursday, 1 June 2017 at 19:31:28 UTC, Joakim wrote:
The beta release of ldc 1.3, the llvm-based D compiler, is
now out:
https://github.com/joakim-noah/android/releases
It is accompanied by a non-trivial sample app from the
Android NDK, ported from C++ to about 1.2 klocs of D: the
classic Utah Teapot
(https://en.wikipedia.org/wiki/Utah_teapot), updated with
mobile touch controls. This app also demonstrates calling
Java functions from your D code through JNI, though most of
it is written in D.
There are two builds of ldc, a cross-compiler that you can
use from a linux/x64 shell to compile to Android/ARM, and a
native compiler that you can run on your Android device
itself. As I pointed out last year, not only is ldc a
large mixed D/C++ codebase that just worked on ARM, but it
is possible to build arbitrarily large Android apps on your
Android device itself, a first for any mobile platform:
http://forum.dlang.org/thread/[email protected]
This is the way the next generation of coders will get into
coding, by tinkering with their Android devices like we did
with Macs and PCs decades ago, and D is one the few
languages that is already there.
I will write up instructions on how to write an Android app
in D _on_ your Android device by using ldc and the Termux
app, and get ldc into the Termux packages, a package
repository for Android:
https://play.google.com/store/apps/details?id=com.termux&hl=en
Hello,
Thanks for the post. I have tried to run apk on 2 devices:
1. LG-E440 phone with Android 4.1.2
2. Orange Pi Lite (development board with Allwinner H3 CPU)
Android 4.4.2
On both devices there was only gray rectangle with "Teapot"
notification at the bottom for about a sec and then in upper
left corner the FPS info (around 60 on both devices), but
without any graphic. I have tried taping, dragging etc.
Are Android versions a problem or it could be something else?
Thanks in advance.
I'd guess that's the issue, as I haven't tested against those
older versions of Android and this app links against Android
API 21, ie 5.0 Lollipop:
https://github.com/joakim-noah/android/blob/master/samples/Teapot/build-apk#L17
I'm pretty sure it'd work for your older Android versions if
built slightly differently, as I used to support back to
Android API 9 until a couple months ago:
https://gist.github.com/joakim-noah/f475b0be37b3834b4e50d68996b6ee1d#file-ldc_1-1-0_android_arm-L3438
It can be still made to so but I set API 21 as the minimum,
because anything older has been declining for some time now:
http://blog.davidecoppola.com/2016/12/android-version-distribution-history-visualization-2012-2016/
Just FYI, I have the same issue with Android 6.0.1.
Hmm, is that the 64-bit Xiaomi device you mentioned in the
github issues just now?
Yep
My guess there would be that it's because ldc only supports
32-bit Android/ARM devices right now, and 64-bit devices like
Xiaomi probably don't run 32-bit native Android libraries in
their apps, though I don't know that for sure. I just tried
installing the teapot app on another 32-bit 6.0.1 phone that
I'd never tried before, worked fine.
Running 32-bit apps on 64-bit Android, shouldn't be an issue as
far I know. See:
https://stackoverflow.com/questions/30782848/how-to-use-32-bit-native-libraries-on-64-bit-android-device
This is not an issue for Java, because the Android runtime
compiles Java bytecode to native code _after_ the app is
downloaded, but other languages have to provide pre-compiled
libraries for each CPU architecture. Not a big deal as there
are only really two in wide deployment, 32-bit and 64-bit ARM,
with the vast majority 32-bit right now.
Perhaps you can help us get on 64-bit ARM, as you mentioned in
the github issues.
Yes, ultimately I'm interested in writing a Vulkan library that
runs on both 32 and 64-bit Linux, Windows and Android, so I'm
interested in helping with the AArch64 support too, though my
compiler-foo is pretty slim. As mentioned in the GH issue [0],
what do I need to bootstrap LDC on Android?
[0]: https://github.com/joakim-noah/android/issues/10