// 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
\ingroup explanations-platforms


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}.

*/
