D on android and d_android

burt invalid_email_address at cab.abc
Tue Apr 7 11:45:24 UTC 2020

On Thursday, 2 April 2020 at 12:13:27 UTC, Adam D. Ruppe wrote:
> On Thursday, 2 April 2020 at 11:29:24 UTC, burt wrote:
>> Anyway, I don't think this fails to work because of an error 
>> in the d_android library. If you find anything else that may 
>> cause it, I am glad to know, but thank you for your help.
> Well, it is supposed to be a "just works" setup helper, so 
> anything in it is a problem! There was an off-by-one bug in the 
> downloader, maybe that missing byte made ldc ignore the 
> corrupted library file.

I managed to get it to compile. I had to add __bss_end__ symbol 
myself and set the value to the value of the `_end` symbol or it 
wouldn't work. A PR to the LDC druntime is wat caused the 
__bss_end__ symbol to be missing [0]. However, when I added a 
MainActivity class in D using arsd.jni, the app crashes whenever 
one of the @Exported methods is called. My code looked like this:

import arsd.jni;

final class TextView : IJavaObject
     mixin IJavaObjectImplementation!(false);
     mixin JavaPackageId!("android.widget", "TextView");
mixin ImportExportImpl!TextView;

final class MainActivity : IJavaObject
     @Export void dFunction(TextView input, TextView output, 
TextView historyItem)
         // ...

     mixin IJavaObjectImplementation!(false);
     mixin JavaPackageId!("com.mypackage.myapplication", 
mixin ImportExportImpl!MainActivity;

And a callback method for a button in Java called dFunction with 
the appropriate parameters. I noticed that the generated .so file 
didn't contain a 
`Java_com_mypackage_myapplication_MainActivity_dFunction` symbol. 
Any help on this would be appreciated.


[0] https://github.com/ldc-developers/druntime/pull/178

More information about the Digitalmars-d-learn mailing list