720d5cc1a4
If Qml module is not found it doesn't make sense to run any functionality that is related to Qml inside androiddeployqt. Add the deployment setting option that indicates this explicitly and set it to true when Qml module is not found by CMake or by qmake. Task-number: QTBUG-106939 Pick-to: 6.4 6.2 Change-Id: I1e6cffbdd230007feffe7448617097c10238a6c9 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io> Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
123 lines
5.5 KiB
Plaintext
123 lines
5.5 KiB
Plaintext
contains(TEMPLATE, ".*app"):!build_pass {
|
|
|
|
defineReplace(emitString) {
|
|
return("\"$$clean_path($$1)\"")
|
|
}
|
|
|
|
FILE_CONTENT = "{"
|
|
FILE_CONTENT += " \"description\": \"This file is generated by qmake to be read by androiddeployqt and should not be modified by hand.\","
|
|
|
|
FILE_CONTENT += " \"qt\": $$emitString($$[QT_INSTALL_PREFIX]),"
|
|
|
|
# Settings from mkspecs/environment
|
|
FILE_CONTENT += " \"sdk\": $$emitString($$ANDROID_SDK_ROOT),"
|
|
FILE_CONTENT += " \"sdkBuildToolsRevision\": $$emitString($$ANDROID_SDK_BUILD_TOOLS_REVISION),"
|
|
|
|
isEmpty(NDK_ROOT): NDK_ROOT = $$(ANDROID_NDK_ROOT)
|
|
isEmpty(NDK_ROOT): NDK_ROOT = $$DEFAULT_ANDROID_NDK_ROOT
|
|
FILE_CONTENT += " \"ndk\": $$emitString($$NDK_ROOT),"
|
|
|
|
FILE_CONTENT += " \"toolchain-prefix\": \"llvm\","
|
|
FILE_CONTENT += " \"tool-prefix\": \"llvm\","
|
|
|
|
NDK_HOST = $$(ANDROID_NDK_HOST)
|
|
isEmpty(NDK_HOST): NDK_HOST = $$DEFAULT_ANDROID_NDK_HOST
|
|
FILE_CONTENT += " \"ndk-host\": $$emitString($$NDK_HOST),"
|
|
|
|
for (arch, ANDROID_ABIS) {
|
|
equals(arch, x86): libs_arch = i686-linux-android
|
|
else: equals(arch, x86_64): libs_arch = x86_64-linux-android
|
|
else: equals(arch, arm64-v8a): libs_arch = aarch64-linux-android
|
|
else: libs_arch = arm-linux-androideabi
|
|
ARCHS += "$$emitString($$arch):$$emitString($$libs_arch)"
|
|
}
|
|
FILE_CONTENT += " \"architectures\": {$$join(ARCHS,", ")},"
|
|
|
|
# Explicitly set qt dependencies of application for deployment
|
|
!isEmpty(ANDROID_DEPLOYMENT_DEPENDENCIES): \
|
|
FILE_CONTENT += " \"deployment-dependencies\": $$emitString($$join(ANDROID_DEPLOYMENT_DEPENDENCIES, ",")),"
|
|
|
|
# Explicitly set external dependencies of application for deployment
|
|
!isEmpty(ANDROID_EXTRA_PLUGINS): \
|
|
FILE_CONTENT += " \"android-extra-plugins\": $$emitString($$join(ANDROID_EXTRA_PLUGINS, ",")),"
|
|
|
|
# Android-specific settings of Project
|
|
!isEmpty(ANDROID_PACKAGE_SOURCE_DIR): \
|
|
FILE_CONTENT += " \"android-package-source-directory\": $$emitString($$ANDROID_PACKAGE_SOURCE_DIR),"
|
|
|
|
# Android-specific version string
|
|
!isEmpty(ANDROID_VERSION_NAME): \
|
|
FILE_CONTENT += " \"android-version-name\": $$emitString($$ANDROID_VERSION_NAME),"
|
|
|
|
# Android-specific version number
|
|
!isEmpty(ANDROID_VERSION_CODE): \
|
|
FILE_CONTENT += " \"android-version-code\": $$emitString($$ANDROID_VERSION_CODE),"
|
|
|
|
!isEmpty(ANDROID_MIN_SDK_VERSION): \
|
|
FILE_CONTENT += " \"android-min-sdk-version\": $$emitString($$ANDROID_MIN_SDK_VERSION),"
|
|
|
|
!isEmpty(ANDROID_TARGET_SDK_VERSION): \
|
|
FILE_CONTENT += " \"android-target-sdk-version\": $$emitString($$ANDROID_TARGET_SDK_VERSION),"
|
|
|
|
!isEmpty(ANDROID_EXTRA_LIBS): \
|
|
FILE_CONTENT += " \"android-extra-libs\": $$emitString($$join(ANDROID_EXTRA_LIBS, ",")),"
|
|
|
|
tool_extension = ""
|
|
contains(QMAKE_HOST.os, Windows): tool_extension = ".exe"
|
|
FILE_CONTENT += " \"rcc-binary\": $$emitString($$[QT_HOST_LIBEXECS]/rcc$${tool_extension}),"
|
|
|
|
contains(QT_MODULES, qml) {
|
|
FILE_CONTENT += " \"qml-importscanner-binary\": $$emitString($$[QT_HOST_LIBEXECS]/qmlimportscanner$${tool_extension}),"
|
|
|
|
qml_import_paths = $$(QML2_IMPORT_PATH)
|
|
qml_import_paths = $$split(qml_import_paths, $$DIRLIST_SEPARATOR)
|
|
qml_import_paths += $$QML_IMPORT_PATH
|
|
!isEmpty(qml_import_paths) {
|
|
FILE_CONTENT += " \"qml-import-paths\": $$emitString($$join(qml_import_paths, ",")),"
|
|
}
|
|
unset(qml_import_paths)
|
|
|
|
|
|
isEmpty(QML_ROOT_PATH): \
|
|
QML_ROOT_PATH = $$_PRO_FILE_PWD_
|
|
FILE_CONTENT += " \"qml-root-path\": $$emitString($$QML_ROOT_PATH),"
|
|
} else {
|
|
FILE_CONTENT += " \"qml-skip-import-scanning\": true,"
|
|
}
|
|
|
|
!isEmpty(ANDROID_APPLICATION_ARGUMENTS): \
|
|
FILE_CONTENT += " \"android-application-arguments\": $$emitString($$ANDROID_APPLICATION_ARGUMENTS),"
|
|
|
|
FILE_CONTENT += " \"stdcpp-path\": $$emitString($$ANDROID_STDCPP_PATH),"
|
|
!isEmpty(RESOURCES)|!isEmpty(QMLCACHE_RESOURCE_FILES) {
|
|
# Make sure that qmake generated qrc files are accounted for
|
|
load(resources_functions)
|
|
qtFlattenResources()
|
|
NEWRESOURCES = $$RESOURCES $$QMLCACHE_RESOURCE_FILES
|
|
for(resource, NEWRESOURCES) {
|
|
contains(resource, ".*qmake_qmake_immediate\\.qrc$") {
|
|
# They will be created for each architecture, since they could be different
|
|
# we need to account for all of them
|
|
qmake_qrc_path = "qmake_qmake_immediate.qrc"
|
|
base_out_path = $$OUT_PWD/$$RCC_DIR
|
|
multi_android_abi {
|
|
for (arch, ANDROID_ABIS): \
|
|
rescopy += $$absolute_path($$qmake_qrc_path, $$base_out_path/$$arch)
|
|
} else {
|
|
rescopy += $$absolute_path($$qmake_qrc_path, $$base_out_path)
|
|
}
|
|
} else {
|
|
contains(resource, ".*\\.qrc$"): rescopy += $$absolute_path($$resource, $$_PRO_FILE_PWD_)
|
|
}
|
|
}
|
|
FILE_CONTENT += " \"qrcFiles\": $$emitString($$join(rescopy, ",")),"
|
|
}
|
|
FILE_CONTENT += ""
|
|
FILE_CONTENT += " \"application-binary\": $$emitString($$TARGET_FOR_ANDROID_DEPLOYMENT_SETTINGS)"
|
|
FILE_CONTENT += "}"
|
|
|
|
isEmpty(ANDROID_DEPLOYMENT_SETTINGS_FILE): ANDROID_DEPLOYMENT_SETTINGS_FILE = $$OUT_PWD/android-$$TARGET_FOR_ANDROID_DEPLOYMENT_SETTINGS-deployment-settings.json
|
|
|
|
write_file($$ANDROID_DEPLOYMENT_SETTINGS_FILE, FILE_CONTENT)|error()
|
|
}
|