D for Android beta
Joakim via Digitalmars-d-announce
digitalmars-d-announce at puremagic.com
Fri Jun 2 02:53:44 PDT 2017
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/
I investigated this a little, as I remembered that I have an old
Android 4.4 Kitkat tablet lying around. I am able to reproduce
the grey screen, with no teapot.
I tried recompiling and linking the native D portion of the app
against API 9, but noticed that the resulting native D library
was exactly the same, with the same SHA hash. Then I remembered
that I built the small Java portion of the app against API 21
also. My guess is that is what is causing the problem, since the
Java source has to do a bit of setup so that both the Java and D
code can share the UI:
https://github.com/joakim-noah/android/blob/master/samples/Teapot/src/com/sample/teapot/TeapotNativeActivity.java
This is needed because this sample app demonstrates using JNI to
call the Java functions showUI and updateFPS, to send the
framerate from D to the Java functions to display at the top left.
I will note the Android 5.0 requirement on the release, thanks
for reporting.
More information about the Digitalmars-d-announce
mailing list