May 08, 2016
On 08 May 2016 02:21, "Joakim via Digitalmars-d-announce" < digitalmars-d-announce@puremagic.com> wrote:
>
> On Saturday, 7 May 2016 at 09:58:14 UTC, Johan Engelen wrote:
>>
>> Fantastic news!
>>
>> I hope we can find a good way to integrate automated testing of github
branches/PRs for Android.
>
>
> There is beta support for Android on Travis, perhaps it can be used to
run the druntime and phobos tests in an emulator. https://aws.amazon.com/device-farm/


May 08, 2016
On Sunday, 8 May 2016 at 05:08:32 UTC, Rory McGuire wrote:
> On 08 May 2016 02:21, "Joakim via Digitalmars-d-announce" < digitalmars-d-announce@puremagic.com> wrote:
>>
>> On Saturday, 7 May 2016 at 09:58:14 UTC, Johan Engelen wrote:
>>>
>>> Fantastic news!
>>>
>>> I hope we can find a good way to integrate automated testing of github
> branches/PRs for Android.
>>
>>
>> There is beta support for Android on Travis, perhaps it can be used to
> run the druntime and phobos tests in an emulator. https://aws.amazon.com/device-farm/

I've heard of it, but it's overkill just to run command-line tests, ie an emulator is enough, and that service costs money.  I think that's more for devs who want to test their app on a wide variety of devices, not open-source languages like D.
May 11, 2016
On Thursday, 5 May 2016 at 14:07:07 UTC, Vadim Lopatin wrote:
> On Thursday, 5 May 2016 at 08:17:07 UTC, Joakim wrote:
>> After a sleepless night of trying to build the latest ldc master branch 2.070.2 on my Android tablet a couple nights ago, almost the full druntime/phobos standard library test suite passes (only one assert in std.conv) and the same for the dmd test suite, with a handful of failures across three modules exclusively testing C/C++ ABI compatibility.
>
> Great work!

I've slapped up some beta builds, have at it:

https://github.com/joakim-noah/android/releases/tag/ddmd

Check out this beautiful version string, a natively built ddmd on my Android tablet:

LDC - the LLVM D compiler (1.0.0-beta1):
  based on DMD v2.070.2 and LLVM 3.8.0
  built with LDC - the LLVM D compiler (3197d6)
  Default target: armv7-none-linux-android
  Host CPU: cortex-a15
  http://dlang.org - http://wiki.dlang.org/LDC

  Registered Targets:
    arm     - ARM
    armeb   - ARM (big endian)
    thumb   - Thumb
    thumbeb - Thumb (big endian)
May 15, 2016
On Wednesday, 11 May 2016 at 19:07:10 UTC, Joakim wrote:
> On Thursday, 5 May 2016 at 14:07:07 UTC, Vadim Lopatin wrote:
>> On Thursday, 5 May 2016 at 08:17:07 UTC, Joakim wrote:
>>> [...]
>>
>> Great work!
>
> I've slapped up some beta builds, have at it:
>
> https://github.com/joakim-noah/android/releases/tag/ddmd
>
> Check out this beautiful version string, a natively built ddmd on my Android tablet:
>
> LDC - the LLVM D compiler (1.0.0-beta1):
>   based on DMD v2.070.2 and LLVM 3.8.0
>   built with LDC - the LLVM D compiler (3197d6)
>   Default target: armv7-none-linux-android
>   Host CPU: cortex-a15
>   http://dlang.org - http://wiki.dlang.org/LDC
>
>   Registered Targets:
>     arm     - ARM
>     armeb   - ARM (big endian)
>     thumb   - Thumb
>     thumbeb - Thumb (big endian)

I've put up three more builds, including ldc master, which uses the latest 2.071 frontend.  Once I get JNI and the sample app working, I'll make a proper announcement.
December 29, 2016
On Sunday, 15 May 2016 at 11:09:01 UTC, Joakim wrote:
> On Wednesday, 11 May 2016 at 19:07:10 UTC, Joakim wrote:
>> On Thursday, 5 May 2016 at 14:07:07 UTC, Vadim Lopatin wrote:
>>> On Thursday, 5 May 2016 at 08:17:07 UTC, Joakim wrote:
>>>> [...]
>>>
>>> Great work!
>>
>> I've slapped up some beta builds, have at it:
>>
>> https://github.com/joakim-noah/android/releases/tag/ddmd
>>
>> Check out this beautiful version string, a natively built ddmd on my Android tablet:
>>
>> LDC - the LLVM D compiler (1.0.0-beta1):
>>   based on DMD v2.070.2 and LLVM 3.8.0
>>   built with LDC - the LLVM D compiler (3197d6)
>>   Default target: armv7-none-linux-android
>>   Host CPU: cortex-a15
>>   http://dlang.org - http://wiki.dlang.org/LDC
>>
>>   Registered Targets:
>>     arm     - ARM
>>     armeb   - ARM (big endian)
>>     thumb   - Thumb
>>     thumbeb - Thumb (big endian)
>
> I've put up three more builds, including ldc master, which uses the latest 2.071 frontend.  Once I get JNI and the sample app working, I'll make a proper announcement.

I've put up the latest native and cross-compiler ldc 1.1.0 beta builds for Android, fresh from the master branch and using the 2.071 frontend:

https://github.com/joakim-noah/android/releases

I believe I've fixed the issue that was causing random crashes in the sample apps, a regression from porting the NDK's C wrapper to D, found by Vadim Lopatim.  I've added three sample apps that demonstrate calling D code from JNI.

The sample C++ Teapot app from the NDK has been ported to D and mostly works, including calling Java methods from D through JNI, but I need to track down some other touch-related bugs from the port before committing it.  I'm finishing up reggae files to make building the sample apps very easy.  I'd like to write up the process to build and use ldc natively on your Android mobile device, from the Termux app, on the wiki.

Once those three are done, I'll create a new thread to properly announce this beta; in the meantime, nothing will change with these new beta builds, so try them out.
December 29, 2016
On 5/5/2016 1:17 AM, Joakim wrote:
> After a sleepless night of trying to build the latest ldc master branch 2.070.2
> on my Android tablet a couple nights ago, almost the full druntime/phobos
> standard library test suite passes (only one assert in std.conv) and the same
> for the dmd test suite, with a handful of failures across three modules
> exclusively testing C/C++ ABI compatibility.

This is wonderful news! Thanks to the LDC team for all their hard work on this.

January 09, 2017
Just reporting here that I was able to get a hello world working using windows and UoW.

Some issues I had:

1. Had issues with outdated libraries. (ncurses, gcc, etc)
2. UoW Aniversary is based on Ubuntu 14, I was able to upgrade to 16.04 following online sources. Lots of snags but eventually worked. (had to remove an file like 50unattended-upgrades.ucf-dist to get everything to finish upgrading)

Basically search for solutions of each error online and eventually one will work. If anyone does this they could document it a bit better for others.

3. Installed android NDK without too much trouble.

4. Building with ldc2 works but must link with something like

$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin/clang -Wl,-z,nocopyreloc --sysroot=$NDK/platforms/android-9/arch-arm -lgcc -gcc-toolchain $NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64 -target armv7-none-linux-androideabi -no-canonical-prefixes -fuse-ld=bfd -Wl,--fix-cortex-a8 -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -fPIE -pie -mthumb -Wl,--export-dynamic -lc -lm test.o lib/libphobos2-ldc.a lib/libdruntime-ldc.a -o test

5. Push to android device and make sure to make executable or it will fail silently(e.g., chmod 755 test). Install a terminal emulator, obviously.

Haven't tried more complex examples but all the hard work seems to be paying off.

Thanks.


February 27, 2017
On Thursday, 29 December 2016 at 09:16:58 UTC, Joakim wrote:
> On Sunday, 15 May 2016 at 11:09:01 UTC, Joakim wrote:
>> On Wednesday, 11 May 2016 at 19:07:10 UTC, Joakim wrote:
>>>     [...]
>>
>> I've put up three more builds, including ldc master, which uses the latest 2.071 frontend.  Once I get JNI and the sample app working, I'll make a proper announcement.
>
> I've put up the latest native and cross-compiler ldc 1.1.0 beta builds for Android, fresh from the master branch and using the 2.071 frontend:
>
> https://github.com/joakim-noah/android/releases
>
> I believe I've fixed the issue that was causing random crashes in the sample apps, a regression from porting the NDK's C wrapper to D, found by Vadim Lopatim.  I've added three sample apps that demonstrate calling D code from JNI.
>
> The sample C++ Teapot app from the NDK has been ported to D and mostly works, including calling Java methods from D through JNI, but I need to track down some other touch-related bugs from the port before committing it.  I'm finishing up reggae files to make building the sample apps very easy.  I'd like to write up the process to build and use ldc natively on your Android mobile device, from the Termux app, on the wiki.
>
> Once those three are done, I'll create a new thread to properly announce this beta; in the meantime, nothing will change with these new beta builds, so try them out.

Piping hot builds of the upcoming ldc 1.1.1 release available as both a linux/x64 -> Android/ARM cross-compiler and a native Android/ARM compiler, that you can run on your own phone or tablet:

https://github.com/joakim-noah/android/releases

I finally spent some time tracking down that touch bug in the sample Teapot app, think I know where it's coming from now, just need to fix it.
March 01, 2017
On Monday, 27 February 2017 at 17:08:26 UTC, Joakim wrote:
>
> Piping hot builds of the upcoming ldc 1.1.1 release available as both a linux/x64 -> Android/ARM cross-compiler and a native Android/ARM compiler, that you can run on your own phone or tablet:
>
> https://github.com/joakim-noah/android/releases
>
> I finally spent some time tracking down that touch bug in the sample Teapot app, think I know where it's coming from now, just need to fix it.

Also Dockerfile is updated and using now this new version.
More info https://wiki.dlang.org/Build_Android_Apps_using_LDC_in_a_Container

Kind regards
André
May 01, 2017
On Monday, 27 February 2017 at 17:08:26 UTC, Joakim wrote:
> On Thursday, 29 December 2016 at 09:16:58 UTC, Joakim wrote:
>> On Sunday, 15 May 2016 at 11:09:01 UTC, Joakim wrote:
>>> On Wednesday, 11 May 2016 at 19:07:10 UTC, Joakim wrote:
>>>>     [...]
>>>
>>> I've put up three more builds, including ldc master, which uses the latest 2.071 frontend.  Once I get JNI and the sample app working, I'll make a proper announcement.
>>
>> I've put up the latest native and cross-compiler ldc 1.1.0 beta builds for Android, fresh from the master branch and using the 2.071 frontend:
>>
>> https://github.com/joakim-noah/android/releases
>>
>> I believe I've fixed the issue that was causing random crashes in the sample apps, a regression from porting the NDK's C wrapper to D, found by Vadim Lopatim.  I've added three sample apps that demonstrate calling D code from JNI.
>>
>> The sample C++ Teapot app from the NDK has been ported to D and mostly works, including calling Java methods from D through JNI, but I need to track down some other touch-related bugs from the port before committing it.  I'm finishing up reggae files to make building the sample apps very easy.  I'd like to write up the process to build and use ldc natively on your Android mobile device, from the Termux app, on the wiki.
>>
>> Once those three are done, I'll create a new thread to properly announce this beta; in the meantime, nothing will change with these new beta builds, so try them out.
>
> Piping hot builds of the upcoming ldc 1.1.1 release available as both a linux/x64 -> Android/ARM cross-compiler and a native Android/ARM compiler, that you can run on your own phone or tablet:
>
> https://github.com/joakim-noah/android/releases
>
> I finally spent some time tracking down that touch bug in the sample Teapot app, think I know where it's coming from now, just need to fix it.

Based on the recent 1.2 release of ldc, new builds for Android are up:

https://github.com/joakim-noah/android/releases

Notice how small the patches for ldc are, now that kinke added support for cross-compiling reals to lower-precision platforms, basically just a few additions to the CMake script to cross-compile the standard library left.  Only a single assert from the stdlib tests trips, a longtime codegen issue in std.random that became visible now, and the entire compiler dmd-testsuite passes.

I'll update the wiki, upload my remaining patches, post upstream PRs, and finally clean up and put out that sample Teapot app, which shows using JNI to call Java functions from your D app, this week.