/****************************************************************************
**
** Copyright (C) 2023 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
\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 don’t 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}.

*/
