Fix android build

Fix qt namespace issues:

* qjniarray.h:339:30: error: no template named 'Traits';
* ld.lld: error: version script assignment of 'Qt_6' to symbol '_ZNTestQTNamespace114QReadWriteLock16destroyRecursiveEP21QReadWriteLockPrivate' failed: symbol not defined
* same for _ZN16QNetworkDatagram7destroyEP23QNetworkDatagramPrivate
* qtimezoneprivate_android.cpp:14:21: error: unknown type name 'TimeZone'
* qandroidplatformclipboard.h:13:1: error: no template named 'Object'

Change-Id: Ia5fc3990af4a4d762e194c7951727f8d5b10670e
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
bb10
Michal Klocek 2023-11-13 14:19:58 +01:00
parent f035766b16
commit b63045477e
5 changed files with 17 additions and 5 deletions

View File

@ -1460,6 +1460,11 @@ foreach(minor_version RANGE ${PROJECT_VERSION_MINOR})
string(APPEND linker_script_contents "${current} {} ${previous};\n")
endif()
endforeach()
if (QT_NAMESPACE STREQUAL "")
set(linker_script_symbol "_ZN14QReadWriteLock16destroyRecursiveEP21QReadWriteLockPrivate")
else()
set(linker_script_symbol "_ZN15${QT_NAMESPACE}14QReadWriteLock16destroyRecursiveEPNS_21QReadWriteLockPrivateE")
endif()
qt_internal_extend_target(Core
EXTRA_LINKER_SCRIPT_CONTENT "${linker_script_contents}"
@ -1469,5 +1474,5 @@ qt_internal_extend_target(Core
# QFutureInterfaceBase::setContinuation(std::function<void (QFutureInterfaceBase const&)>, QFutureInterfaceBasePrivate*)
"_ZN20QFutureInterfaceBase15setContinuationE*P27QFutureInterfaceBasePrivate"
# QReadWriteLock::destroyRecursive(QReadWriteLockPrivate*)
"_ZN14QReadWriteLock16destroyRecursiveEP21QReadWriteLockPrivate"
${linker_script_symbol}
)

View File

@ -773,7 +773,9 @@ inline bool operator!=(const QJniObject &obj1, const QJniObject &obj2)
// This cannot be included earlier as QJniArray is a QJniObject subclass, but it
// must be included so that we can implement QJniObject::LocalFrame conversion.
QT_END_NAMESPACE
#include <QtCore/qjniarray.h>
QT_BEGIN_NAMESPACE
template <typename ...Args>
template <typename T>

View File

@ -7,6 +7,7 @@
#include <QtCore/QJniEnvironment>
#include <QtCore/QSet>
#include <QtCore/qjnitypes.h>
QT_BEGIN_NAMESPACE

View File

@ -400,11 +400,15 @@ qt_internal_extend_target(Network CONDITION WIN32
if(QT_FEATURE_private_tests)
add_subdirectory(doc/snippets/network)
endif()
if (QT_NAMESPACE STREQUAL "")
set(linker_script_symbol "_ZN16QNetworkDatagram7destroyEP23QNetworkDatagramPrivate")
else()
set(linker_script_symbol "_ZN15${QT_NAMESPACE}16QNetworkDatagram7destroyEPNS_23QNetworkDatagramPrivateE")
endif()
qt_internal_extend_target(Network
# Workaround for QTBUG-118229:
# Function called by inline methods taking a pointer to a private class as a parameter
EXTRA_LINKER_SCRIPT_EXPORTS
# QNetworkDatagram::destroy(QNetworkDatagramPrivate *d)
"_ZN16QNetworkDatagram7destroyEP23QNetworkDatagramPrivate"
${linker_script_symbol}
)

View File

@ -11,10 +11,10 @@
#ifndef QT_NO_CLIPBOARD
Q_DECLARE_JNI_CLASS(QtClipboardManager, "org/qtproject/qt/android/QtClipboardManager");
QT_BEGIN_NAMESPACE
Q_DECLARE_JNI_CLASS(QtClipboardManager, "org/qtproject/qt/android/QtClipboardManager");
class QAndroidPlatformClipboard : public QPlatformClipboard
{
public: