Very cool! Congrats! Glad to see another android app on the play store built with gnustep!
Sent from my iPhone On Oct 12, 2020, at 11:53 AM, Gregory Casamento <greg.casamento@gmail.com> wrote:
Frederick,
Congratulations, I am glad we could be a part of it!
GC
So cool!
> Il giorno 12 ott 2020, alle ore 14:35, Frederik Seiffert <frederik@algoriddim.com> ha scritto:
>
> Hi all,
>
> I’m happy to share that we launched our app "djay" on Android using GNUstep:
> https://play.google.com/store/apps/details?id=com.algoriddim.djay_free
>
> It’s using the Android toolchain scripts to cross-compile GNUstep and its dependencies for Android:
> https://github.com/gnustep/tools-android
>
> The basic setup is Clang with libobjc2 using the 2.0 runtime, GNUstep-Base and libdispatch. Those components allow us to compile and run essentially all of our existing non-UI / non-platform specific code for Android without changes, which is multiple 100k LOC using ARC, on 4 ABIs (armeabi-v7a, arm64-v8a, x86, x86_64). I’m still amazed how well it all works.
>
> For the UI we went with Qt/QML, which turned out to be a great fit. Like ObjC, Qt/QML is very dynamic at runtime, which enabled us to write some glue code that lets us do two-way bindings between QML UI components and our ObjC model using KVO/KVC. As the app is driven by Qt’s run loop, we’re driving NSRunLoop and libdispatch from Qt, which is currently done by swizzling NSRunLoop on launch.
>
> We also wrote a Java-ObjC bridge that allows us to register ObjC blocks as native callbacks from Java (using libffi via Mike Ash’s MABlockClosure). It e.g. allows us to hook into the Android notification system and call ObjC methods when the user triggers playback controls on the home screen.
>
> It’s been a challenging but very rewarding project, and it’s also been great to see how it improved our shared code base by forcing us to more strictly separate platform-specific code. I’m also happy that we could make some contributions to the GNUstep code base ourselves (67 PRs and counting ;)).
>
> But most importantly we really could not have done it without the incredible work and support from the GNUstep community, including Greg, David, Fred, Richard, Niels, Ivan, and others. Thank you all for your help!
>
> Frederik
>
>
--
|