Qt 5.12 and Android arm64 build

Jan Mulder jlmulder at xs4all.nl
Sat Nov 24 00:23:36 PST 2018


On 23-11-2018 19:27, Dirk Hohndel wrote:
> 
>> On Nov 23, 2018, at 6:34 AM, Jan Mulder <jlmulder at xs4all.nl> wrote:
>>
>> A status update. After hours of rebuilding, NDK version changes etc. I managed to build Subsurface-Mobile for Android using the following components: OpenJDK 10, Android NDK 18b, latest Android SDK, Qt 5.12 Beta 4, clang using LLVM libc++, both for arm and arm64 architectures.
> 
> Wow.
> 
>> This build does not have the problem mentioned above (runOnAndroidThread undefined on link time), so the borders are working again. So, definitely, my first attempt described above was broken (highly likely related to mixup of GNU stl and libc++ headers).
>>
>> Unfortunately, the runtime crash on device is still there, shown in the logcat as as follows:
> 
> Orgs.
> 
>> 11-23 13:09:16.180 10906 10906 E AndroidRuntime: java.lang.UnsatisfiedLinkError: No implementation found for void org.qtpr
>> oject.qt5.android.bluetooth.QtBluetoothBroadcastReceiver.jniOnReceive(long, android.content.Context, android.content.Inten
>> t) (tried Java_org_qtproject_qt5_android_bluetooth_QtBluetoothBroadcastReceiver_jniOnReceive and Java_org_qtproject_qt5_an
>> droid_bluetooth_QtBluetoothBroadcastReceiver_jniOnReceive__JLandroid_content_Context_2Landroid_content_Intent_2)
>> 11-23 13:09:16.180 10906 10906 E AndroidRuntime:        at org.qtproject.qt5.android.bluetooth.QtBluetoothBroadcastReceive
>> r.jniOnReceive(Native Method)
>>
>> This crash can be triggered at will, by simply switching BT on/off, and unfortunately, that missing code is also triggered on a regular BT/BLE download, making the app more or less useless for any BT/BLE use at this point.
> 
> Not good. From the looks of it this does sound like it might be a Qt issue, so I'm adding Alex...

Something I overlooked. I was testing all the time with builds for arm64 
architecture, and there I can reproduce this non-implemented 
jniOnReceive issue at will. However, testing for arm, all just works. 
That's definitely a clue, and I can definitely not rule out an issue in 
my build stack. The good news is that we can build a working arm version.

> 
>> I did review numerous recent Qt changes in the related qtconnectivity and qtbluetooth on source code level (not building Qt from source, only code reading). Nothing I found sticks out as suspicious, and nothing to really substantiate a Qt bug. So, basically I'm on a dead end at this point, and I can better go cave diving the coming days :-)
> 
> Be save diving.
> Do you have pointers on how to re-create your build? Any patches needed? Specific versions?

Will push things to my github asap, but first need to do some cleanup. 
Notice that Qt 5.12 is not yet downloadable (as not yet released), and 
all my work is currently local build only. No Travis integration yet.


--jan


More information about the subsurface mailing list