5bb178c479
Multi arch build in one go is need to support the new .aab packaging format. By default the users apps are built for all Android ABIs: arm64-v8a armeabi-v7a x86_64 x86 The user can pass ANDROID_ABIS to qmake to filter the ABIs during development, e.g. qmake ANDROID_ABIS="arm64-v8a armeabi-v7a" will build only for arm ABIs. [ChangeLog][Android] Android multi arch build in one go, needed to support the new .aab packaging format. Change-Id: I3a64caf9621c2a195863976a62a57cdf47e6e3b5 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
95 lines
3.5 KiB
Plaintext
95 lines
3.5 KiB
Plaintext
|
|
# W A R N I N G
|
|
# -------------
|
|
#
|
|
# This file is not part of the Qt API. It exists purely as an
|
|
# implementation detail. It may change from version to version
|
|
# without notice, or even be removed.
|
|
#
|
|
# We mean it.
|
|
#
|
|
|
|
# Generates an xml file to match the library in lib/ listing the dependencies
|
|
# of the module on JNI-based libraries etc. Used for deployment of an Android
|
|
# app.
|
|
|
|
ANDROID_DEPENDS_DIR = $$MODULE_BASE_OUTDIR/lib/
|
|
DEPENDENCY_FILE = $$ANDROID_DEPENDS_DIR$$TARGET-android-dependencies.xml
|
|
|
|
build_pass:!isEmpty(QT_ARCH): {
|
|
!isEmpty(MODULE_PLUGIN_TYPES) {
|
|
for(PLUGIN_TYPE, MODULE_PLUGIN_TYPES) {
|
|
ANDROID_BUNDLED_FILES += "plugins/$$PLUGIN_TYPE"
|
|
}
|
|
}
|
|
|
|
!isEmpty(ANDROID_JAR_DEPENDENCIES) {
|
|
for(JAR_FILE, ANDROID_JAR_DEPENDENCIES) {
|
|
INIT_CLASS = $$section(JAR_FILE, ":", 1, 1)
|
|
!isEmpty(INIT_CLASS): INIT_CLASS = "initClass=\"$$INIT_CLASS\""
|
|
JAR_FILE = $$section(JAR_FILE, ":", 0, 0)
|
|
FILE_CONTENT += "<jar file=\"$$JAR_FILE\" $$INIT_CLASS />"
|
|
}
|
|
}
|
|
|
|
!isEmpty(ANDROID_BUNDLED_JAR_DEPENDENCIES) {
|
|
for(JAR_FILE, ANDROID_BUNDLED_JAR_DEPENDENCIES) {
|
|
INIT_CLASS = $$section(JAR_FILE, ":", 1, 1)
|
|
!isEmpty(INIT_CLASS): INIT_CLASS = "initClass=\"$$INIT_CLASS\""
|
|
JAR_FILE = $$section(JAR_FILE, ":", 0, 0)
|
|
FILE_CONTENT += "<jar bundling=\"1\" file=\"$$JAR_FILE\" $$INIT_CLASS />"
|
|
}
|
|
}
|
|
|
|
!isEmpty(ANDROID_LIB_DEPENDENCIES) {
|
|
for(LIB_FILE, ANDROID_LIB_DEPENDENCIES) {
|
|
EXTENDS = $$section(LIB_FILE, ":", 1, 1)
|
|
!isEmpty(EXTENDS): EXTENDS = "extends=\"$$EXTENDS\""
|
|
LIB_FILE = $$section(LIB_FILE, ":", 0, 0)
|
|
LIB_FILE = $$replace(LIB_FILE,".so", "_$${QT_ARCH}.so")
|
|
!isEmpty(EXTENDS): EXTENDS = $$replace(EXTENDS,".so", "_$${QT_ARCH}.so")
|
|
FILE_CONTENT += "<lib file=\"$$LIB_FILE\" $$EXTENDS />"
|
|
}
|
|
}
|
|
|
|
!isEmpty(ANDROID_LIB_DEPENDENCY_REPLACEMENTS) {
|
|
for(REPLACEMENT, ANDROID_LIB_DEPENDENCY_REPLACEMENTS) {
|
|
REPLACEMENT_FILE = $$section(REPLACEMENT, ":", 0, 0)
|
|
LIB_FILE = $$section(REPLACEMENT, ":", 1, 1)
|
|
REPLACEMENT_FILE = $$replace(REPLACEMENT_FILE,".so", "_$${QT_ARCH}.so")
|
|
FILE_CONTENT += "<lib file=\"$$LIB_FILE\" replaces=\"$$REPLACEMENT_FILE\" />"
|
|
}
|
|
}
|
|
|
|
!isEmpty(ANDROID_BUNDLED_FILES) {
|
|
for (BUNDLED_FILE, ANDROID_BUNDLED_FILES) {
|
|
BUNDLED_FILE = $$replace(BUNDLED_FILE,".so", "_$${QT_ARCH}.so")
|
|
FILE_CONTENT += "<bundled file=\"$$BUNDLED_FILE\" />"
|
|
}
|
|
}
|
|
|
|
!isEmpty(ANDROID_PERMISSIONS) {
|
|
for (ANDROID_PERMISSION, ANDROID_PERMISSIONS) {
|
|
FILE_CONTENT += "<permission name=\"$$ANDROID_PERMISSION\" />"
|
|
}
|
|
}
|
|
|
|
!isEmpty(ANDROID_FEATURES) {
|
|
for (ANDROID_FEATURE, ANDROID_FEATURES) {
|
|
FILE_CONTENT += "<feature name=\"$$ANDROID_FEATURE\" />"
|
|
}
|
|
}
|
|
|
|
|
|
!isEmpty(FILE_CONTENT) {
|
|
FILE_CONTENT = "<rules><dependencies><lib name=\"$$TARGET\"><depends>" $$FILE_CONTENT "</depends></lib></dependencies></rules>"
|
|
write_file($$DEPENDENCY_FILE, FILE_CONTENT)|error()
|
|
}
|
|
}
|
|
|
|
!isEmpty(ANDROID_JAR_DEPENDENCIES)|!isEmpty(ANDROID_LIB_DEPENDENCIES)|!isEmpty(ANDROID_LIB_DEPENDENCY_REPLACEMENTS)|!isEmpty(ANDROID_BUNDLED_JAR_DEPENDENCIES)|!isEmpty(ANDROID_BUNDLED_FILES) {
|
|
install_dependencies_file.files = $$DEPENDENCY_FILE
|
|
install_dependencies_file.path = $$[QT_INSTALL_LIBS]
|
|
INSTALLS += install_dependencies_file
|
|
}
|