When I uninstalled old NDK versions including 21.3.6528147
, QT Creator displayed this:

I downloaded QT 6.2.2, verified its checksum:
certutil -hashfile qt-everywhere-src-6.2.2.zip MD5
Configured QT for building in the system Command Prompt (but not in MSVC Developer Command Prompt) as follows:
CALL "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64
set "CMAKE_ROOT=E:\PFiles\cmake-3.21.3-windows-x86_64\bin"
set "NINJA_ROOT=E:\PFiles\ninja-win"
set "PERL_ROOT=E:\PFiles\Strawberry\perl\bin"
set PATH=%CMAKE_ROOT%;%PATH%
set PATH=%NINJA_ROOT%;%PATH%
set PATH=%PERL_ROOT%;%PATH%
set PATH=E:\PFiles\Python35;%PATH%
rem Check if the tools are in PATH
where perl.exe
where python.exe
where cmake.exe
where ninja.exe
set "MY_INSTALL_PATH=E:\Qt\Qt6.2.2\windows"
set CL=/MP
configure.bat -prefix %MY_INSTALL_PATH% -DQT_NO_EXCEPTIONS=1 -debug-and-release -force-debug-info -platform win32-msvc -opensource -confirm-license ^
-opengl es2 -I "C:\Program Files\OpenSSL\include" -L "C:\Program Files\OpenSSL\lib"
First I built QT 6.2 for Windows then I installed JDK8, CMake 3.21.3 and configured QT as follows:
set "CMAKE_ROOT=E:\PFiles\cmake-3.21.3-windows-x86_64\bin"
set "NINJA_ROOT=E:\PFiles\ninja-win"
set "JDK_ROOT=C:\Program Files\Java\jdk1.8.0_301\bin"
set "MINGW_ROOT=E:\PFiles\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin"
set "PERL_ROOT=E:\PFiles\Strawberry\perl\bin"
set PATH=C:\WINDOWS\system32;C:\WINDOWS
set PATH=%CMAKE_ROOT%;%PATH%
set PATH=%NINJA_ROOT%;%PATH%
set PATH=%JDK_ROOT%;%PATH%
set PATH=%MINGW_ROOT%;%PATH%
set PATH=%PERL_ROOT%;%PATH%
set PATH=E:\PFiles\Python35;%PATH%
rem Check if the tools are in PATH
where gcc
where mingw32-make.exe
where perl.exe
where javac.exe
where python.exe
where cmake.exe
where ninja.exe
set "ANDROID_SDK_ROOT=C:\Users\D-Ef\AppData\Local\Android\Sdk"
set "ANDROID_NDK_PATH=C:\Users\D-Ef\AppData\Local\Android\Sdk\ndk\21.3.6528147"
rem See qtbase\mkspecs\android-clang\qmake.conf
set "ANDROID_NDK_PLATFORM=android-23"
rem see %ANDROID_SDK_ROOT%\build-tools folder
set "ANDROID_BUILD_TOOLS_REVISION=29.0.2"
set MY_INSTALL_PATH=E:\Qt\Qt6.2\android
set QT_HOST_PATH=E:\Qt\Qt6.2\windows
configure.bat -platform android-clang -prefix %MY_INSTALL_PATH% -android-sdk %ANDROID_SDK_ROOT% -android-ndk %ANDROID_NDK_PATH% -qt-host-path %QT_HOST_PATH% -android-abis x86_64 ^
-DQT_NO_EXCEPTIONS=1 -release -force-debug-info -opensource -confirm-license
CMake
did not work and there was a yellow triangle at the left side of MSVC2019 kit name:
I fixed this buy changing C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat
with C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsx86_arm64.bat
.
There is an example of using QML_ELEMENT
in qt5\qtdeclarative\examples\quick\scenegraph\openglunderqml
and qt_add_qml_module
in CMake
:
qt_add_qml_module(openglunderqml
URI OpenGLUnderQML
VERSION 1.0
QML_FILES main.qml
RESOURCE_PREFIX /scenegraph/openglunderqml
NO_RESOURCE_TARGET_PATH
)
In QML
it imports the module:
import OpenGLUnderQML 1.0
I cloned QT repository:
git clone --recursive https://code.qt.io/qt/qt5.git --branch v6.2.0
cd qt5
Looks like the command below is not required:
./init-repository --module-subset=all
because it prints:
Will not reinitialize already initialized repository (use -f to force)!
Looks like QtPurchasing uses deprecated AIDL billing library and people say that it crashes on some devices. See https://developer.android.com/google/play/billing/deprecation-faq for more information. Probably they are going to update it in 5.15.7 and move it into examples in QT 6, so it is not clear exactly what will happen with it, we probably better wait QT 5.15.7 to be released.
(more…)In QT 5.15 I declare a class with an invokable constructor:
class TestClass : public QObject
{
Q_OBJECT
public:
Q_INVOKABLE TestClass(QString val) {}
};
Q_DECLARE_METATYPE(TestClass*)
register its type:
qRegisterMetaType<TestClass*>();
I get close reason: ‘Invalid UTF-8 code encountered.’ (code=1007) with QWebSocket
in the following scenario:
Binance
stream wss://stream.binance.com:9443/stream
with QWebSocket::open
.Binance
disconnects me when its servers load increases (because I have low-priority API) and I get close reason code=1000 that indicates a normal closure.QWebSocket::open
again, but Binance
closes the connection with close reason ‘Invalid UTF-8 code encountered.’ (code=1007) that indicates that an endpoint is terminating the connection because it has received data within a message that was not consistent with the type of the message (e.g., non-UTF-8 [RFC3629] data within a text message).The difficulty of reproducing the bug is that Binance
disconnects me rarely (once a day, for example) and experimentation with disconnecting the network cable from my machine does not have this effect, after I connect the cable back, QWebSocker
reconnects successfully. When I disconnect the network cable I get Error: ‘Unknown error’ (code=-1), Close reason: ” (code=1000).
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"/>