Category Archives: Platforms and frameworks

Built my QT app for Android with API level 30 (Android 11)

New Android App Bundle and target API level requirements in 2021:

Starting August 2021, new apps will be required to target API level 30 (Android 11) and use the Android App Bundle publishing format. Starting November 2021, all app updates will be required to target API level 30 (Android 11). Apps with a download size of more than 150 MB are now supported by Play Asset Delivery and Play Feature Delivery.

I updated the manifest manually as follows:

<?xml version="1.0"?>
<manifest package="net.geographx.LinesGame" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="2.5.30" android:versionCode="161" android:installLocation="auto">
    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="30"/>
(more…)

My QT Android app periodically crashes at android::RefBase::incStrong(void const*)

The call stack is:

  #00  pc 00000000000097a8  /system/lib/libutils.so (android::RefBase::incStrong(void const*) const+4)
  #00  pc 0000000000022145  /vendor/lib/libIMGegl.so
  #00  pc 000000000000ab79  /vendor/lib/libIMGegl.so (KEGLGetDrawableParameters+252)
  #00  pc 0000000000041c53  /vendor/lib/egl/libGLESv2_mtk.so
  #00  pc 000000000001663d  /vendor/lib/egl/libGLESv2_mtk.so
  #00  pc 0000000000016b01  /vendor/lib/egl/libGLESv2_mtk.so (glClear+440)
  #00  pc 000000000008acaf  /data/app/net.geographx.LinesGame-9_pUex92-tGEqE4iIbRCCw==/lib/arm/libLinesGameQt_armeabi-v7a.so (LinesGame::Squircle::beforeRendering()+270)
  #00  pc 000000000017d5b9  /data/app/net.geographx.LinesGame-9_pUex92-tGEqE4iIbRCCw==/lib/arm/libQt5Core_armeabi-v7a.so
  #00  pc 0000000000176f4d  /data/app/net.geographx.LinesGame-9_pUex92-tGEqE4iIbRCCw==/lib/arm/libQt5Quick_armeabi-v7a.so (QQuickWindowPrivate::renderSceneGraph(QSize const&, QSize const&)+172)

It is a QT bug that is not fixed yet.

Also my app crashes at the destructor of std::thread and this also a QT bug that is not fixed yet.

Applying a path that fixes a bug in QT 5.15.2

There was a bug in QT 5.15.2 that results in app crash on Android 5.1 and a patch:

Submodule qtbase contains modified content
diff --git a/qtbase/src/corelib/plugin/qlibrary_unix.cpp b/qtbase/src/corelib/plugin/qlibrary_unix.cpp
index a5c72f81d9..5cd21b67a4 100644
--- a/qtbase/src/corelib/plugin/qlibrary_unix.cpp
+++ b/qtbase/src/corelib/plugin/qlibrary_unix.cpp
@@ -243,10 +243,10 @@ bool QLibraryPrivate::load_sys()
             }
             if (hnd) {
                 using JniOnLoadPtr = jint (*)(JavaVM *vm, void *reserved);
-                JniOnLoadPtr jniOnLoad = reinterpret_cast<JniOnLoadPtr>(dlsym(pHnd, "JNI_OnLoad"));
+                JniOnLoadPtr jniOnLoad = reinterpret_cast<JniOnLoadPtr>(dlsym(hnd, "JNI_OnLoad"));
                 if (jniOnLoad && jniOnLoad(QtAndroidPrivate::javaVM(), nullptr) == JNI_ERR) {
                     dlclose(hnd);
-                    pHnd = nullptr;
+                    hnd = nullptr;
                 }
             }
 #endif

Looks like it was simply a typo and pHnd was replaced with hnd.

QT 5.15.3 where the bug was fixed is commercial so I applied the patch by myself (thanks to danilabagroff from stackoverflow.com):

(more…)

Building QT 6.1.0 for Android on Windows

Theoretically it can be:

git clone --recursive https://code.qt.io/qt/qt5.git --branch v6.1.0

or alternatively:

git clone https://code.qt.io/qt/qt5.git --branch v6.1.0
./init-repository --branch --module-subset=essential,qtandroidextras,qtsvg,qtquickcontrols2,qtgraphicaleffects,qtwebsockets,qtmultimedia

or

./init-repository --module-subset=all
(more…)

QT 5.15.2 app crashes on Android 5.1

My QT 5.15.2 app crashes on Android 5.1 with the following call stack:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'Android/sdk_google_phone_x86_64/generic_x86_64:5.1.1/LMY48X/6402608:userdebug/test-keys'
Revision: '0'
ABI: 'x86_64'
pid: 3954, tid: 3998, name: qtMainLoopThrea  >>> net.geographx.LinesGame <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Abort message: 'art/runtime/mirror/art_method.cc:356] Check failed: !IsFastNative() int java.lang.Character.digitImpl!(int, int)'
    rax 0000000000000000  rbx 0000000000000f9e  rcx ffffffffffffffff  rdx 0000000000000006
    rsi 0000000000000f9e  rdi 0000000000000f72
    r8  0000000000000022  r9  0000000000000002  r10 0000000000000008  r11 0000000000000206
    r12 000000000000000b  r13 0000000000000006  r14 00007f747b51a000  r15 0000000000000051
    cs  0000000000000033  ss  000000000000002b
    rip 00007f7488099e37  rbp 00007f7467007b70  rsp 00007f74670063e8  eflags 0000000000000206
(more…)

Dragging a link from a browser to a QML app

When a link is dragged from a browser on Window 10 platform it contains the page title, but they did not make it accessible in QML:

import QtQuick 2.15
import QtQuick.Controls 2.15

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Scroll")
    id: root

    DropArea {
        id: dropArea;
        anchors.fill: parent
        onEntered: {
            root.color = "gray";
            drag.accept (Qt.LinkAction);
        }
(more…)

Publishing QT application in Apple App Store

I succeeded with building my app for iOS and my first step in publishing the app in App Store was opening generated .xcodeproj file in XCode, but XCode froze displaying rotating progress indicator and wait cursor.

(more…)

Compiling QT5.15.0 with OpenSSL support with MSVC2017 on Windows

First, I compiled and installed OpenSSL 1.1.1g in the same way as before:

set PERL_ROOT=E:\PFiles\Strawberry\perl\bin
set PATH=%PERL_ROOT%;%PATH%
set PATH=%PATH%;C:\PFiles\nasm-2.14.02-win64
perl Configure VC-WIN64A
set CL=/MP
nmake
nmake install
(more…)

Building QT 5.15.0 (everywhere) for Android on Windows

  • Install Android Studio with SDK and NDK API Level 28.
  • Install strawberry-perl-5.26.2.1-64bit.msi first (before mingw-w64-install.exe) to E:\PFiles
  • Install MinGW with mingw-w64-install.exe online installer. Select POSIX threads in the installer UI combobox, otherwise you will get:
  • Extract the sources from QT archive qt-everywhere-src-5.15.0.zip to E:\Qt\Qt5.15.0 and run the following script in QT root directory containing configure.bat:
(more…)

Running a QT app on MacOS

I was able to compile and debug my app on MacOS with QT Creator:

All C++ code compiled successfully, but something went wrong with OpenGLES shaders. It is probably because I included OpenGLES headers from a wrong place.

(more…)