/****************************************************************************
**
** Copyright (C) 2020 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.html
\title Qt for Android
\brief Provides information about Android support in Qt.
\ingroup supportedplatform
\previouspage android_runtime_licensing_notes.html
\nextpage android-getting-started.html

Qt for Android enables you to run Qt applications on Android devices.
\omit //! Modules are not part of Qt 6.0

All Qt modules (essentials and add-ons) are supported except the following:

\list
    \li Qt WebEngine
    \li Qt Virtual Keyboard
\endlist
\endomit //! Modules are not part of Qt 6.0
The following configurations are supported:

\include supported-platforms.qdocinc android

The following list summarizes what you can do with Qt for Android:

\list
    \li Run \l{Qt Widgets}{Widget-based} and \l{QML Applications}{QML}
        applications on a device or an emulator.
    \li Support for the \l{Material Style}{Material Style} with
        Qt Quick Controls.
    \li Handle \l{Qt Multimedia}{Multimedia} content.
    \omit //! Qt Sensors not part of Qt 6.0
    \li Get \l{Qt Sensors}{sensor} readings.
    \endomit //! Qt Sensors not part of Qt 6.0
    \li Retrieve positioning data using satellite or network information.
    \omit
    \li Connect and exchange data with \l{Qt Bluetooth}{Bluetooth}
        and \l{Qt NFC}{NFC}-enabled devices.
    \endomit //! Qt Bluetooth and NFC not part of Qt 6.0
    \li Develop secure applications using OpenSSL library.
    \li Create \l{Android Services}.
    \li Create and deploy Application Package (APK) and Android App Bundle (AAB)
        packages using Qt Creator.
\endlist

The following topics provide more details about how to use Qt for Android:
\list
 \li \l{Getting Started with Qt for Android}{Getting Started}
 \li \l{Qt for Android - Building from Source}
 \li \l{Porting to Android}{Porting a Qt Application}
 \li \l{Qt for Android Examples}{Qt Examples on Android}
 \li \l{Deploying an Application on Android}
 \li \l{Qt Creator: Deploying Applications to Android Devices}
 \li \l{Adding OpenSSL Support for Android}
 \li \l{Qt Android Manifest File Configuration}
 \li \l{Android Services}{Creating Android Services}
 \li \l{Third-party Android Libraries}
     {Including third-party Android libraries in an application}
 \li \l{Publishing to Google Play}
 \li \l{Android Platform Notes}
 \li \l{Android GNU C++ run-time licensing}
\endlist
*/

/*!
\page android-getting-started.html
\title Getting Started with Qt for Android
\brief Provides instructions to install and configure your development environment.
\previouspage android.html
\nextpage android-building.html

\section1 Installing the Prerequisites

In order to use \l{Qt for Android}, you need the following:

\list
    \li Java Development Kit (JDK) provided by \l{AdoptOpenJDK} for all platforms,
        is required to build Android apps. Other alternatives such as \l{OpenJDK}
        for Linux or \l{Java SE Development Kit} for Windows are also supported.

        \note JDK 11 or earlier must be used when using Qt for Android.

    \li \l{Gradle} for building application packages (APK) and app bundles
        (AAB) for Android devices. Gradle is delivered with Qt 5.9, and later.

        \note Using Ant to build APKs is no longer supported.

    \target android-sdk
    \li \l{Android: The Android SDK Tools}{The Android Command-line SDK Tools}
        to install the following packages that are required to compile Qt
        applications for Android:

        \list
            \li Platform tools
            \li Build tools
            \li At least one SDK platform
            \li \l {android-ndk}{The Android NDK}, which contains toolchains
                and debuggers for Android.
        \endlist

        \note Qt Creator 4.12 or later can set up the SDK Tools, NDK, and
        essential packages automatically. For more information, see
        \l {Qt Creator: Specifying Android Device Settings}.

        \note If you are using the SDK Tools 26.x or below, the JDK 8 is required.
        Versions higher than 8 might cause issues for \l {android-sdk}{the Android SDK tools}.

        \note If your Qt version is earlier than v5.9, use the SDK tools package
        v25.2.5 or earlier.

    \target android-ndk
    \li \l{Android: The Android NDK}{The Android NDK}
        can be installed using the \c sdkmanager tool. Alternatively, you can
        download it and extract it manually to a path of your choosing.
\endlist

Different Qt versions depend on different NDK versions, as listed below:

\table
    \header
        \li Qt version
        \li NDK version
        \li Toolchain
    \row
        \li Qt 5.14.0 or later
            Qt 5.13.2 or later
            Qt 5.12.6 or later
        \li NDK r20b or r21
        \li android-clang
    \row
        \li Qt 5.12.0 to 5.12.5
            Qt 5.13.0 to 5.13.1
        \li NDK r19c
        \li android-clang
    \row
        \li Qt 5.11 and earlier
        \li NDK r10e
        \li GCC toolchain
\endtable

\note Qt 5.14.0 and 5.14.1 with NDK r21 have a bug fixed at \l {QTBUG-81461}.

\note Make sure to unpack the Android SDK and NDK to a writeable location that Qt Creator
can access later. Otherwise, Qt Creator won't be able to use \c sdkmanager or find all
components even if they were installed manually.

\section2 Installing the Android SDK Essentials

After downloading and unpacking the Commandline SDK Tools, use the \c sdkmanager
command line tool to install the essential packages:

\badcode
cd <ANDROID_SDK_ROOT>/tools/bin/
./sdkmanager --sdk_root=<ANDROID_SDK_ROOT> --install "cmdline-tools;latest"
./sdkmanager --sdk_root=<ANDROID_SDK_ROOT> --install "platform-tools" "platforms;android-29" "build-tools;29.0.2" "ndk;21.3.6528147"
\endcode

\l {Android: Android Studio}{Android Studio} or the Qt Creator's
\l{Qt Creator: Managing Android SDK Packages}{SDK Manager UI} can also be used
to install the essential SDK packages.

To use the \l {Android: Android Emulator}{Android Emulator}, install it by
entering:

\badcode
./sdkmanager --sdk_root=<ANDROID_SDK_ROOT> --install "emulator" "patcher;v4"
\endcode

\section1 Host Specific Configuration

\section2 Windows

The default USB driver on Windows does not allow debugging using
Android Debug Bridge (ADB) tool. You must install the additional USB driver
provided by the \e extras Android SDK package. To install it, run the following:

\badcode
sdkmanager.bat --sdk_root=<ANDROID_SDK_ROOT> --install "extras;google;usb_driver"
\endcode

After the package installation is complete, install the driver from
\c{<ANDROID_SDK_ROOT>/extras/google/usb_driver}. Try running a few basic
\l{Android: adb}{adb} commands now and check whether your Android device
responds to them.

\section2 Linux

The following dependencies are needed for using tools such as \c adb or \c gdb which
can be used by Qt Creator:

\badcode
sudo apt-get install libstdc++6 libncurses5
\endcode

\target emulator dependencies
To run the Android emulator, the following dependencies are also necessary:

\badcode
sudo apt-get install libsdl1.2debian
\endcode

\section2 Qt Creator IDE

The Qt Creator IDE can be used to develop Qt applications for Android. For more
information, see \l{Qt Creator: Connecting Android Devices}.

\section1 Testing Your Setup

Now you can test your development setup by running the examples shipped with the
Qt installation. For more information, see \l {Qt for Android Examples}.

To develop a simple application from scratch, see
\l {Qt Creator: Creating a Mobile Application}.
*/
