D for Android beta
via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Fri Jun 2 03:40:48 PDT 2017
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/ovkhtsdzlfzqrqneolyv@forum.dlang.org
>>>>>
>>>>> 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
More information about the Digitalmars-d-announce
mailing list