Version tolerant serialization in C++

Last time I have been working on a C++ binary serialization framework that allows to serialize simple data structures with a few lines of code. First, you add AWL_REFLECT macro to all your structures as follows:

#include "Awl/Reflection.h"
#include <string>
#include <vector>
#include <set>

struct A
    int a;
    bool b;
    std::string c;
    double d;

    AWL_REFLECT(a, b, c, d)

“Null object reference” exceptions on Android 14 in a QT app

When I switched to QT 6.7.2 and set QT_ANDROID_TARGET_SDK_VERSION "34" (that is Android 14) my QT app started to crash with the following stack traces:

On google Pixel 5 64-bit only 1080x2340 Android 14 (SDK 34) arm64-v8a:

Exception java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
  at android.os.Parcel.createExceptionOrNull (
  at android.os.Parcel.createException (
  at android.os.Parcel.readException (
  at android.database.DatabaseUtils.readExceptionFromParcel (
  at android.database.DatabaseUtils.readExceptionFromParcel (
  at (
  at (
  at (
  at ekfr.a ( (190400-633713831):29)
  at ( (190400-633713831):252)
  at ( (190400-633713831):2)
  at ajdw.onHandleIntent ( (190400-633713831):8)
  at ( (190400-633713831):70)
  at ( (190400-633713831):152)
  at ( (190400-633713831):21)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (
  at java.util.concurrent.ThreadPoolExecutor$ (
  at (

QT stopped compiling with QT_NO_EXCEPTIONS

QT 6.7.2 failed to build with QT_NO_EXCEPTIONS for Android with the following errors:

C:/dev/repos/qt-everywhere-src-6.7.2/qtbase/src/corelib/io/qprocess_unix.cpp:889:29: error: use of undeclared identifier 'e'
        failChildProcess(d, e.what(), FakeErrnoForThrow);
C:/dev/repos/qt-everywhere-src-6.7.2/qtbase/src/corelib/io/qprocess_unix.cpp:890:7: error: expected expression
    } QT_CATCH (...) {
C:/dev/repos/qt-everywhere-src-6.7.2/qtbase/src/corelib/global/qexceptionhandling.h:28:23: note: expanded from macro 'QT_CATCH'
#  define QT_CATCH(A) else
2 errors generated.
[673/5992] Building CXX object qtbase/src/corelib/CMakeFiles/Core.dir/itemmodels/qabstractitemmodel.cpp.o
ninja: build stopped: subcommand failed.

Updating Yandex Mobile SDK to version 7.1

QT generates with the following values:


Entering EU Digital Services Act compliance information in App Store Connect

I spent several hours trying to figure out how to Enter EU Digital Services Act compliance information in Apple App Store Connect. The keys steps I did were the following:


Launching the iOS Simulator from Terminal

Running a default Simulator:

open -a

List of devices:

xcrun simctl list

Building Lines Game for MacOS and iOS

To build my app for iOS I tried to run CMake from the command line without QT Creator:

cmake -S /Users/admin/dev/repos/examples/src/LinesGame/LinesGameQt -B . -DCMAKE_GENERATOR:STRING=Xcode \
  -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=./.qtc/package-manager/auto-setup.cmake -DQT_QMAKE_EXECUTABLE:FILEPATH=/Users/admin/dev/libs/QT6/release/iOS/bin/qmake6 \
  -DCMAKE_PREFIX_PATH:PATH=/Users/admin/dev/libs/QT6/release/iOS \
  -DCMAKE_TOOLCHAIN_FILE:FILEPATH=/Users/admin/dev/libs/QT6/release/iOS/lib/cmake/Qt6/qt.toolchain.cmake \

Publishing MacOS QT app in Apple App Store

First I set CMake generator to XCode in QT Creator Kits settings page:


Publishing iOS QT app in Apple App Store

I downloaded provisioning profiles with XCode:


Building QT6.7 on MacOS Sonoma

I installed MacOS Sonoma on HyperV, installed XCode and used the following commands to check compiler and SDK versions:

admin@son ~ % xcode-select -print-path
admin@son ~ %  xcrun -sdk macosx -find clang
admin@son ~ % clang --version
Apple clang version 15.0.0 (clang-1500.3.9.4)
Target: x86_64-apple-darwin23.4.0
Thread model: posix
InstalledDir: /Applications/
admin@son ~ % xcrun -sdk macosx --show-sdk-path