// Copyright (C) 2020 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only

/*!
    \page android-3rdparty-libs.html
    \title Third-party Android Libraries
    \ingroup androidplatform
    \brief Instructions on including third-party Android libraries in an application.
    \previouspage android-services.html
    \nextpage android-publishing-to-googleplay.html

    This guide describes how to include a Java-based third-party library in your
    application package. There are many Java libraries which provide APIs that
    may be useful to your application.

    \section1 Prerequisites

    This guide assumes that the \l{androiddeployqt} tool is used for constructing
    the deployment package. When using Qt Creator for building and deploying,
    androiddeployqt is used behind the scenes, so this also applies to
    development with Qt Creator. Explaining how to access the Java APIs after
    being included in the project is not in the scope of this guide. For
    more information, see \l{Customizing the Package Templates}.

    \section1 Including a Library to an Android Project

    The very first thing you need to do is to copy the library files into
    your project. The contents of the library have to be copied without
    modifications into the packaging directory, i.e. into the path set with
    \l{qmake} variable \l{ANDROID_PACKAGE_SOURCE_DIR}. For more information, see
    \l{Android Libraries}.

    If you are using Qt Creator, you can quickly set up the packaging directory
    structure by selecting \uicontrol Projects > \uicontrol Build >
    \uicontrol {Build Android APK} > \uicontrol {Create Templates}. This creates
    a directory for your \l{Customizing the Package Templates}{Android package customizations}.
    Copy the library directory into \c {$ANDROID_PACKAGE_SOURCE_DIR/libs/}.

    \section2 Adding a .jar or .aar Library

    By default, Qt for Android uses can use \c .jar or \c .aar libraries that are
    found in the path \c {$ANDROID_PACKAGE_SOURCE_DIR/libs/}. Qt has the following
    rule in \c{build.gradle} file that is part of \l{Gradle files}{the Gradle files}
    used by Android build:

    \badcode
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
    \endcode

    \section1 Adding a Library Project

    Having a library called \c{CustomLibrary}, similar to the previous approach,
    copy the library project to your packaging directory
    \c{$ANDROID_PACKAGE_SOURCE_DIR/libs/}, then create a file \c{settings.gradle}
    with the following content:

    \badcode
    include ':libs:CustomLibrary'
    \endcode

    Then, add the dependency to \c{build.gradle} file inside the \c{dependencies}
    block:

    \badcode
    dependencies {
        implementation project(":libs:CustomLibrary")
    }
    \endcode

    For more information on adding libraries to an Android project, see
    \l{Android: Add build dependencies}{Add build dependencies Android documentation}.

    \section1 Deployment

    Once \l{Gradle} settings and the library files are all properly configured,
    Qt for Android should be able to build your \c APK or \c AAB package with
    your custom library.

*/
