Docs: Add Android platform documentation

How it works page, host environment variables page,
and relevant CMake information page added.

Fixes: QTBUG-107704
Pick-to: 6.4 6.2
Change-Id: I823d3f9d97f49e79da867660bd4cd41a8378266a
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
This commit is contained in:
Nicholas Bennett 2022-10-31 14:30:20 +02:00
parent a5f5f8810c
commit 23d41aaf79
6 changed files with 136 additions and 1 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@ -65,7 +65,8 @@ qhp.QtDoc.subprojects.examples.sortPages = true
# Add an image used in example manifests to qhp, as well as thumbnails for YouTube links
{HTML.extraimages,DocBook.extraimages,qhp.QtDoc.extraFiles} += images/qt-codesample.png \
images/yIv0vO8B7tQ.jpg \
images/5OiIqFTjUZI.jpg
images/5OiIqFTjUZI.jpg \
images/nmvurCcsWos.jpg
# Add an .html file with sidebar content, used in the online style
HTML.stylesheets += style/qt5-sidebar.html

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View File

@ -0,0 +1,34 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page android-build-environment-variables.html
\title Qt for Android: CMake
\brief Information regarding CMake and Android platform APIs.
\ingroup androidplatform
This page lists information regarding CMake and Qt for Android platform support.
\section1 Variables affecting the build process
\list
\li \l{QT_ANDROID_PACKAGE_SOURCE_DIR}
\li \l{QT_ANDROID_EXTRA_LIBS}
\li \l{QT_ANDROID_EXTRA_PLUGINS}
\endlist
\section2 Variables affecting Gradle
\list
\li \l{QT_ANDROID_MIN_SDK_VERSION}
\li \l{QT_ANDROID_TARGET_SDK_VERSION}
\li \l{QT_ANDROID_SDK_BUILD_TOOLS_REVISION}
\endlist
\section2 Variables affecting the Android app manifest file
\list
\li \l{QT_ANDROID_VERSION_CODE}
\li \l{QT_ANDROID_VERSION_NAME}
\li \l{QT_ANDROID_APPLICATION_ARGUMENTS}
\endlist
*/

View File

@ -0,0 +1,44 @@
// Copyright (C) 2020 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page android-environment-variables.html
\title Environment Variables Used by Qt for Android
\brief Lists some useful environment variables used by the Qt For Android toolchain.
\ingroup androidplatform
\section1 Enabling or disabling workarounds
Qt Android uses some environment variables to enable/disable certain workarounds:
\section2 Commonly used variables
\list
\li QT_ANDROID_NO_EXIT_CALL: In some cases, an Android app might not be able
to safely clean all threads while calling \c exit() and crash. This is because
there are C++ threads running and destroying these without joining them
terminates an application. These threads cannot be joined because it's not
possible to know if they are running.
This flag avoids calling \c exit() and lets the Android system handle this,
at the cost of not attempting to run global destructors.
\li QT_ANDROID_ENABLE_WORKAROUND_TO_DISABLE_PREDICTIVE_TEXT: Allows
the hiding of predictive text suggestions, mainly from password fields. Certain
devices dont handle this properly.
\li QT_ANDROID_ENABLE_RIGHT_MOUSE_FROM_LONG_PRESS: Interprets a long touch press
as a right mouse click event.
\li QT_ANDROID_DISABLE_ACCESSIBILITY: Disable \l{Assistive Tools}{Accessibility}.
This prevents the processing of accessibility events.
\endlist
\section2 Less commonly used variables
\list
\li QT_ANDROID_FONT_LOCATION: Sets a custom path for system fonts.
\li QT_ANDROID_MAX_ASSETS_CACHE_SIZE: cache size for assets under the
assets folder.
\li QT_ANDROID_DISABLE_GLYPH_CACHE_WORKAROUND
\li QT_ANDROID_RASTER_IMAGE_DEPTH
\li QT_ANDROID_MINIMUM_MOUSE_DOUBLE_CLICK_DISTANCE
\endlist
\note Though related, these are not the same as CMake commands or variables used
by Qt For Android, see \l{Qt for Android: CMake}
*/

View File

@ -0,0 +1,56 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
/*!
\page android-how-it-works.html
\title Qt for Android: How It Works
\brief An overview of architecture, toolchain, and other useful information.
\ingroup androidplatform
If you're a developer looking for a high level overview of how Qt supports the
Android platform, this page is for you.
The video from the 2021 Qt World Summit gives an overview of Qt for Android.
\youtube nmvurCcsWos "A picture of an agenda that links to a YouTube video"
\section1 Architecture
\section2 Activities
The implementation of Qt for Android is made up of three main parts,
and the glue in between:
\list
\li Qt Core
\li the Android QPA plugin
\li The Java Android code
\endlist
\image qt_android_architecture.png "An overview Qt for Android's Architecture"
\list
\li The default entry point for a Qt app is the QtActivity, which upon
starting, will call the QtActivityLoader which will try to load the
application by calling the QtActivityDelegate.
\li QtActivityDelegate will make the necessary calls to load the Qt
libraries and the main app library with the help of QtNative.
\li QtNative handles the various Java operations that dont need to be
exposed, such as: loading the libraries and handling files.
\li The QtActivityDelegate also handles the different listeners and input
handlers and propagate them from Java to Qt.
\endlist
\section2 Services
The architecture here is similar to that of Activities, but with services
specific classes.
For information on how Qt supports Services in Android see \l{Android Services}.
\section1 Build configuration
For more information on configuration Qt for Android Builds see
\l{Environment Variables Used by Qt for Android} and \{Qt for Android: CMake}.
*/