aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaphael Cotty <raphael.cotty@gmail.com>2021-04-01 20:35:00 +0200
committerRaphaƫl Cotty <raphael.cotty@gmail.com>2021-05-26 05:15:03 +0000
commitd57614e1f1d2ffc9ef0c22178f1be87a900387f2 (patch)
treec6f4a7220cf8ff3de502cf6b5c6fd7724230e7bf
parentff04acd64d85d460e0f52a7ead233ae503e616d7 (diff)
Android: Add option to use dex compiler d8 instead of dx
d8 dex compiler was introduced in Build Tools 28.0.2 to replace dx. It is the default compiler used by gradle since version 4.4 Change-Id: I603c61f6f1a151f3c5be78385bf9648929e7d81b Reviewed-by: Ivan Komissarov <ABBAPOH@gmail.com>
-rw-r--r--share/qbs/module-providers/Qt/templates/android_support.qbs9
-rw-r--r--share/qbs/modules/Android/sdk/sdk.qbs9
-rw-r--r--share/qbs/modules/Android/sdk/utils.js55
-rw-r--r--tests/auto/blackbox/find/find-android.qbs1
-rw-r--r--tests/auto/blackbox/tst_blackboxandroid.cpp108
5 files changed, 135 insertions, 47 deletions
diff --git a/share/qbs/module-providers/Qt/templates/android_support.qbs b/share/qbs/module-providers/Qt/templates/android_support.qbs
index 4ce1364ea..a1975b890 100644
--- a/share/qbs/module-providers/Qt/templates/android_support.qbs
+++ b/share/qbs/module-providers/Qt/templates/android_support.qbs
@@ -14,7 +14,6 @@ Module {
property stringList extraPlugins // qmake: ANDROID_EXTRA_PLUGINS
property stringList extraLibs // qmake: ANDROID_EXTRA_LIBS
property bool verboseAndroidDeployQt: false
-
property string _androidDeployQtFilePath: FileInfo.joinPaths(_qtBinaryDir, "bin",
"androiddeployqt")
property string _qtBinaryDir
@@ -57,6 +56,8 @@ Module {
Android.sdk.customManifestProcessing: true
java._tagJniHeaders: false // prevent rule cycle
}
+ readonly property string _qtAndroidJarFileName: Utilities.versionCompare(version, "6.0") >= 0 ?
+ "Qt6Android.jar" : "QtAndroid.jar"
Properties {
condition: _enableSdkSupport && Utilities.versionCompare(version, "5.15") >= 0
&& Utilities.versionCompare(version, "6.0") < 0
@@ -301,8 +302,11 @@ Module {
filePath: "deployqt.list",
fileTags: "android.deployqt_list"
},
+ // androiddeployqt potentially copies more jar files but this one will always be there
+ // since it comes with Qt.core
{
- filePath: FileInfo.joinPaths(product.java.classFilesDir, "QtAndroid.jar"),
+ filePath: FileInfo.joinPaths(product.java.classFilesDir,
+ product.Qt.android_support._qtAndroidJarFileName),
fileTags: "bundled_jar"
}
]
@@ -353,6 +357,7 @@ Module {
var moveCmd = new JavaScriptCommand();
moveCmd.description = "processing androiddeployqt outout";
moveCmd.sourceCode = function() {
+ File.makePath(product.java.classFilesDir);
var libsDir = product.Qt.android_support._deployQtOutDir + "/libs";
var libDir = product.Android.sdk.packageContentsDir + "/lib";
var listFilePath = outputs["android.deployqt_list"][0].filePath;
diff --git a/share/qbs/modules/Android/sdk/sdk.qbs b/share/qbs/modules/Android/sdk/sdk.qbs
index 76f84dca6..b284c1f8f 100644
--- a/share/qbs/modules/Android/sdk/sdk.qbs
+++ b/share/qbs/modules/Android/sdk/sdk.qbs
@@ -167,6 +167,13 @@ Module {
property path apksignerFilePath: FileInfo.joinPaths(buildToolsDir, "apksigner")
property path aidlFilePath: FileInfo.joinPaths(buildToolsDir, "aidl")
property path dxFilePath: FileInfo.joinPaths(buildToolsDir, "dx")
+ property path d8FilePath: FileInfo.joinPaths(buildToolsDir, "d8")
+ property string dexCompilerName: "d8"
+ PropertyOptions {
+ name: "dexCompilerName"
+ allowedValues: ["dx", "d8"]
+ }
+ readonly property bool _useD8: dexCompilerName === "d8"
property path zipalignFilePath: FileInfo.joinPaths(buildToolsDir, "zipalign")
property path androidJarFilePath: FileInfo.joinPaths(sdkDir, "platforms", platform,
"android.jar")
@@ -430,7 +437,7 @@ Module {
condition: _enableRules
multiplex: true
inputs: ["java.class"]
- inputsFromDependencies: ["java.jar"]
+ inputsFromDependencies: ["java.jar", "bundled_jar"]
Artifact {
filePath: product.Android.sdk._generateAab ?
FileInfo.joinPaths(product.Android.sdk.packageContentsDir, "dex",
diff --git a/share/qbs/modules/Android/sdk/utils.js b/share/qbs/modules/Android/sdk/utils.js
index 264ad2da7..a10ca69fc 100644
--- a/share/qbs/modules/Android/sdk/utils.js
+++ b/share/qbs/modules/Android/sdk/utils.js
@@ -57,8 +57,21 @@ function availableBuildToolsVersions(sdkDir) {
}
function prepareDex(project, product, inputs, outputs, input, output, explicitlyDependsOn) {
- var dxFilePath = product.Android.sdk.dxFilePath;
- var args = ["--dex", "--output", output.filePath, product.java.classFilesDir];
+ var dexCompilerFilePath = product.Android.sdk._useD8 ? product.Android.sdk.d8FilePath
+ : product.Android.sdk.dxFilePath;
+ var args = ["--output", FileInfo.path(output.filePath)];
+
+ if (product.Android.sdk._useD8) {
+ args.push("--no-desugaring", "--release");
+ var classes = inputs["java.class"];
+ if (classes) {
+ args = args.concat(classes.map(function(javaClass) {
+ return FileInfo.relativePath(product.java.classFilesDir, javaClass.filePath) }));
+ }
+ } else {
+ args.unshift("--dex");
+ args.push(product.java.classFilesDir);
+ }
var jarFiles = [];
function traverseJarDeps(dep) {
@@ -80,8 +93,42 @@ function prepareDex(project, product, inputs, outputs, input, output, explicitly
args = args.concat(jarFiles);
- var cmd = new Command(dxFilePath, args);
- cmd.description = "creating " + output.fileName;
+ var cmd;
+ if (product.Android.sdk._useD8) {
+ cmd = new JavaScriptCommand();
+ cmd.args = args;
+ cmd.dexCompilerFilePath = dexCompilerFilePath;
+ cmd.description = "creating " + output.fileName;
+ cmd.workingDirectory = product.java.classFilesDir;
+ cmd.extendedDescription = dexCompilerFilePath + " " + args.join(' ');
+ cmd.highlight = "compiler";
+ cmd.sourceCode = function() {
+ // androiddeployqt copied jar files in product.java.classFilesDir
+ // but the rule only tags one jar file ("QtAndroid.jar"/"Qt6Android.jar")
+ // So to pass all files to d8, Qbs needs to read the directory
+ var bundledJarFilesDir = product.java.classFilesDir;
+ var bundledJarFiles = File.directoryEntries(bundledJarFilesDir, File.Files
+ | File.NoDotAndDotDot);
+ args = args.concat(bundledJarFiles.map(function(jarFile) {
+ return FileInfo.joinPaths(bundledJarFilesDir, jarFile) }));
+ var process = new Process();
+ var exitCode;
+ process.setWorkingDirectory(workingDirectory);
+ process.exec(dexCompilerFilePath, args, true);
+ try {
+ process.exec(dexCompilerFilePath, args, true);
+ } catch (e) {
+ throw new Error("Error while running dex compiler command: '"
+ + Process.shellQuote(dexCompilerFilePath, args) + "': " + e.toString());
+ } finally {
+ process.close();
+ }
+ }
+ } else {
+ cmd = new Command(dexCompilerFilePath, args);
+ cmd.description = "creating " + output.fileName;
+ cmd.workingDirectory = product.java.classFilesDir;
+ }
return [cmd];
}
diff --git a/tests/auto/blackbox/find/find-android.qbs b/tests/auto/blackbox/find/find-android.qbs
index de5c78d10..1cde0ed84 100644
--- a/tests/auto/blackbox/find/find-android.qbs
+++ b/tests/auto/blackbox/find/find-android.qbs
@@ -41,6 +41,7 @@ Product {
if (product.moduleProperty("Android.sdk", "present")) {
tools["sdk"] = product.moduleProperty("Android.sdk", "sdkDir");
tools["sdk-build-tools-dx"] = product.Android.sdk.dxFilePath;
+ tools["sdk-build-tools-d8"] = product.Android.sdk.d8FilePath;
}
if (product.java && product.java.present)
diff --git a/tests/auto/blackbox/tst_blackboxandroid.cpp b/tests/auto/blackbox/tst_blackboxandroid.cpp
index c56ee4f43..ba864ed78 100644
--- a/tests/auto/blackbox/tst_blackboxandroid.cpp
+++ b/tests/auto/blackbox/tst_blackboxandroid.cpp
@@ -58,6 +58,7 @@ QMap<QString, QString> TestBlackboxAndroid::findAndroid(int *status, const QStri
return {
{"sdk", QDir::fromNativeSeparators(tools["sdk"].toString())},
{"sdk-build-tools-dx", QDir::fromNativeSeparators(tools["sdk-build-tools-dx"].toString())},
+ {"sdk-build-tools-d8", QDir::fromNativeSeparators(tools["sdk-build-tools-d8"].toString())},
{"ndk", QDir::fromNativeSeparators(tools["ndk"].toString())},
{"ndk-samples", QDir::fromNativeSeparators(tools["ndk-samples"].toString())},
{"jar", QDir::fromNativeSeparators(tools["jar"].toString())},
@@ -83,6 +84,7 @@ void TestBlackboxAndroid::android()
QFETCH(bool, enableAapt2);
QFETCH(bool, generateAab);
QFETCH(bool, isIncrementalBuild);
+ QFETCH(bool, enableD8);
// skip tests on github except when run in docker - this var is not propagated into the image
if (qEnvironmentVariableIsSet("GITHUB_ACTIONS"))
@@ -181,11 +183,12 @@ void TestBlackboxAndroid::android()
}
if (projectDir == "multiple-libs-per-apk") {
- const auto dxPath = androidPaths["sdk-build-tools-dx"];
- QVERIFY(!dxPath.isEmpty());
+ const auto dexCompilerPath = enableD8 ? androidPaths["sdk-build-tools-d8"]
+ : androidPaths["sdk-build-tools-dx"];
+ QVERIFY(!dexCompilerPath.isEmpty());
const auto lines = m_qbsStdout.split('\n');
const auto it = std::find_if(lines.cbegin(), lines.cend(), [&](const QByteArray &line) {
- return !line.isEmpty() && line.startsWith(dxPath.toUtf8());
+ return !line.isEmpty() && line.startsWith(dexCompilerPath.toUtf8());
});
QVERIFY2(it != lines.cend(), qPrintable(m_qbsStdout.constData()));
const auto line = *it;
@@ -290,6 +293,7 @@ void TestBlackboxAndroid::android_data()
QTest::addColumn<bool>("enableAapt2");
QTest::addColumn<bool>("generateAab");
QTest::addColumn<bool>("isIncrementalBuild");
+ QTest::addColumn<bool>("enableD8");
const auto aaptVersion = [](bool enableAapt2) {
return QString("modules.Android.sdk.aaptName:") + (enableAapt2 ? "aapt2" : "aapt");
@@ -301,6 +305,11 @@ void TestBlackboxAndroid::android_data()
bool generateAab = false;
bool isIncrementalBuild = false;
+ const auto dexCompilerVersion = [](bool enableD8) {
+ return QString("modules.Android.sdk.dexCompilerName:") + (enableD8 ? "d8" : "dx");
+ };
+ bool enableD8 = true;
+
auto qtAppExpectedFiles = [&](bool generateAab, bool enableAapt2, bool codeSign = true,
QString keyAlias="androiddebugkey") {
QByteArrayList expectedFile;
@@ -379,7 +388,7 @@ void TestBlackboxAndroid::android_data()
keyPassword, keyAlias)
<< aaptVersion(enableAapt2)
<< packageType(generateAab))
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;;
codeSign = false;
QTest::newRow("qt app no signing")
<< "qt-app" << QStringList("qt-app")
@@ -391,7 +400,7 @@ void TestBlackboxAndroid::android_data()
keyPassword, keyAlias)
<< aaptVersion(enableAapt2)
<< packageType(generateAab))
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
enableAapt2 = true;
codeSign = true;
QTest::newRow("qt app aapt2")
@@ -404,7 +413,7 @@ void TestBlackboxAndroid::android_data()
keyPassword, keyAlias)
<< aaptVersion(enableAapt2)
<< packageType(generateAab))
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
generateAab = true;
QTest::newRow("qt app aab")
<< "qt-app" << QStringList("qt-app")
@@ -416,7 +425,7 @@ void TestBlackboxAndroid::android_data()
keyPassword, keyAlias)
<< aaptVersion(enableAapt2)
<< packageType(generateAab))
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
codeSign = false;
QTest::newRow("qt app aab no signing")
<< "qt-app" << QStringList("qt-app")
@@ -428,7 +437,7 @@ void TestBlackboxAndroid::android_data()
keyPassword, keyAlias)
<< aaptVersion(enableAapt2)
<< packageType(generateAab))
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
const QByteArrayList ndkArchsForQtSave = ndkArchsForQt;
ndkArchsForQt = {ndkArchsForQt.first()};
@@ -438,7 +447,7 @@ void TestBlackboxAndroid::android_data()
enableAapt2)))
<< QStringList{aaptVersion(enableAapt2), packageType(generateAab),
"modules.qbs.architectures:" + archsForQt.first()}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
ndkArchsForQt = ndkArchsForQtSave;
auto teaPotAppExpectedFiles = [&](const QByteArrayList &archs, bool generateAab) {
@@ -459,26 +468,25 @@ void TestBlackboxAndroid::android_data()
expectedFile << "resources.arsc";
return expectedFile;
};
-
generateAab = false;
enableAapt2 = false;
QTest::newRow("teapot")
<< "teapot" << QStringList("TeapotNativeActivity")
<< (QList<QByteArrayList>() << teaPotAppExpectedFiles(archs, generateAab))
<< QStringList{aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
enableAapt2 = true;
QTest::newRow("teapot aapt2")
<< "teapot" << QStringList("TeapotNativeActivity")
<< (QList<QByteArrayList>() << teaPotAppExpectedFiles(archs, generateAab))
<< QStringList{aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
generateAab = true;
QTest::newRow("teapot aapt2 aab")
<< "teapot" << QStringList("TeapotNativeActivity")
<< (QList<QByteArrayList>() << teaPotAppExpectedFiles(archs, generateAab))
<< QStringList{aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
enableAapt2 = false;
generateAab = false;
QTest::newRow("minimal-native")
@@ -490,7 +498,7 @@ void TestBlackboxAndroid::android_data()
<< QStringList{"products.minimalnative.multiplexByQbsProperties:[]",
"modules.qbs.architecture:" + archsStringList.first(),
aaptVersion(enableAapt2)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
enableAapt2 = true;
QTest::newRow("minimal-native aapt2")
<< "minimal-native" << QStringList("minimalnative")
@@ -502,7 +510,7 @@ void TestBlackboxAndroid::android_data()
<< QStringList{"products.minimalnative.multiplexByQbsProperties:[]",
"modules.qbs.architecture:" + archsStringList.first(),
aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
generateAab = true;
QTest::newRow("minimal-native aapt2 aab")
<< "minimal-native" << QStringList("minimalnative")
@@ -515,7 +523,7 @@ void TestBlackboxAndroid::android_data()
<< QStringList{"products.minimalnative.multiplexByQbsProperties:[]",
"modules.qbs.architecture:" + archsStringList.first(),
aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
auto qmlAppExpectedFiles = [&](bool generateAab, bool enableAapt2) {
QByteArrayList expectedFile;
@@ -808,7 +816,7 @@ void TestBlackboxAndroid::android_data()
<< (QList<QByteArrayList>() << qmlAppExpectedFiles(generateAab, enableAapt2))
<< (QStringList() << qmlAppCustomProperties << aaptVersion(enableAapt2)
<< packageType(generateAab))
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
enableAapt2 = true;
QTest::newRow("qml app aapt2")
@@ -816,14 +824,14 @@ void TestBlackboxAndroid::android_data()
<< (QList<QByteArrayList>() << qmlAppExpectedFiles(generateAab, enableAapt2))
<< (QStringList() << qmlAppCustomProperties << aaptVersion(enableAapt2)
<< packageType(generateAab))
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
generateAab = true;
QTest::newRow("qml app aab")
<< "qml-app" << QStringList("qmlapp")
<< (QList<QByteArrayList>() << qmlAppExpectedFiles(generateAab, enableAapt2))
<< (QStringList() << qmlAppCustomProperties << aaptVersion(enableAapt2)
<< packageType(generateAab))
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
enableAapt2 = false;
generateAab = false;
QTest::newRow("qml app with custom metadata")
@@ -833,7 +841,7 @@ void TestBlackboxAndroid::android_data()
enableAapt2)))
<< QStringList{"modules.Android.sdk.automaticSources:true",
aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
enableAapt2 = true;
QTest::newRow("qml app with custom metadata aapt2")
<< "qml-app" << QStringList("qmlapp")
@@ -842,7 +850,7 @@ void TestBlackboxAndroid::android_data()
enableAapt2)))
<< QStringList{"modules.Android.sdk.automaticSources:true", aaptVersion(enableAapt2),
packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
generateAab = true;
if (!singleArchQt) {
QTest::newRow("qml app with custom metadata aab")
@@ -852,7 +860,7 @@ void TestBlackboxAndroid::android_data()
enableAapt2)))
<< QStringList{"modules.Android.sdk.automaticSources:true", aaptVersion(enableAapt2),
packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
}
isIncrementalBuild = false;
enableAapt2 = false;
@@ -887,44 +895,45 @@ void TestBlackboxAndroid::android_data()
<< QStringList("com.example.android.basicmediadecoder")
<< (QList<QByteArrayList>() << noNativeExpectedFiles(generateAab))
<< QStringList{aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
enableAapt2 = true;
QTest::newRow("no native aapt2")
<< "no-native"
<< QStringList("com.example.android.basicmediadecoder")
<< (QList<QByteArrayList>() << noNativeExpectedFiles(generateAab))
<< QStringList{aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
generateAab = true;
QTest::newRow("no native aab")
<< "no-native"
<< QStringList("com.example.android.basicmediadecoder")
<< (QList<QByteArrayList>() << noNativeExpectedFiles(generateAab))
<< QStringList{aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
enableAapt2 = false;
generateAab = false;
QTest::newRow("aidl") << "aidl" << QStringList("io.qbs.aidltest")
<< (QList<QByteArrayList>() << (QByteArrayList()
<< commonFiles(generateAab)))
<< QStringList{aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
enableAapt2 = true;
QTest::newRow("aidl") << "aidl" << QStringList("io.qbs.aidltest")
<< (QList<QByteArrayList>() << (QByteArrayList()
<< commonFiles(generateAab)
<< "resources.arsc"))
<< QStringList{aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
generateAab = true;
QTest::newRow("aidl") << "aidl" << QStringList("io.qbs.aidltest")
<< (QList<QByteArrayList>() << (QByteArrayList()
<< commonFiles(generateAab)
<< "base/resources.pb"))
<< QStringList{aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
enableAapt2 = false;
generateAab = false;
+ enableD8 = false;
QTest::newRow("multiple libs")
<< "multiple-libs-per-apk"
<< QStringList("twolibs")
@@ -933,8 +942,22 @@ void TestBlackboxAndroid::android_data()
"lib/${ARCH}/liblib1.so",
"lib/${ARCH}/liblib2.so",
cxxLibPath("libstlport_shared.so", false)}, generateAab))
- << QStringList{aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << QStringList{aaptVersion(enableAapt2), packageType(generateAab),
+ dexCompilerVersion(enableD8)}
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
+ enableD8 = true;
+ QTest::newRow("multiple libs with d8")
+ << "multiple-libs-per-apk"
+ << QStringList("twolibs")
+ << (QList<QByteArrayList>() << commonFiles(generateAab) + expandArchs(archs, {
+ "resources.arsc",
+ "lib/${ARCH}/liblib1.so",
+ "lib/${ARCH}/liblib2.so",
+ cxxLibPath("libstlport_shared.so", false)}, generateAab))
+ << QStringList{aaptVersion(enableAapt2), packageType(generateAab),
+ dexCompilerVersion(enableD8)}
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
+ enableD8 = false;
enableAapt2 = true;
QTest::newRow("multiple libs aapt2")
<< "multiple-libs-per-apk"
@@ -944,8 +967,9 @@ void TestBlackboxAndroid::android_data()
"lib/${ARCH}/liblib1.so",
"lib/${ARCH}/liblib2.so",
cxxLibPath("libstlport_shared.so", false)}, generateAab))
- << QStringList{aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << QStringList{aaptVersion(enableAapt2), packageType(generateAab),
+ dexCompilerVersion(enableD8)}
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
generateAab = true;
QTest::newRow("multiple libs aab")
<< "multiple-libs-per-apk"
@@ -955,8 +979,9 @@ void TestBlackboxAndroid::android_data()
"lib/${ARCH}/liblib1.so",
"lib/${ARCH}/liblib2.so",
cxxLibPath("libstlport_shared.so", false)}, generateAab))
- << QStringList{aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << QStringList{aaptVersion(enableAapt2), packageType(generateAab),
+ dexCompilerVersion(enableD8)}
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
enableAapt2 = false;
generateAab = false;
auto expectedFiles1 = [&](bool generateAab) {
@@ -985,16 +1010,18 @@ void TestBlackboxAndroid::android_data()
<< "multiple-apks-per-project"
<< (QStringList() << "twolibs1" << "twolibs2")
<< QList<QByteArrayList>{expectedFiles1(generateAab), expectedFiles2(generateAab)}
- << QStringList{aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << QStringList{aaptVersion(enableAapt2), packageType(generateAab),
+ dexCompilerVersion(enableD8)}
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
enableAapt2 = true;
QTest::newRow("multiple apks aapt2")
<< "multiple-apks-per-project"
<< (QStringList() << "twolibs1" << "twolibs2")
<< (QList<QByteArrayList>() << expectedFiles1(generateAab)
<< (QByteArrayList() << expectedFiles2(generateAab) << "resources.arsc"))
- << QStringList{aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << QStringList{aaptVersion(enableAapt2), packageType(generateAab),
+ dexCompilerVersion(enableD8)}
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
generateAab = true;
QTest::newRow("multiple apks aab")
<< "multiple-apks-per-project"
@@ -1002,8 +1029,9 @@ void TestBlackboxAndroid::android_data()
<< (QList<QByteArrayList>() << expectedFiles1(generateAab)
<< (QByteArrayList() << expectedFiles2(generateAab) << "base/resources.pb"
<< "base/native.pb"))
- << QStringList{aaptVersion(enableAapt2), packageType(generateAab)}
- << enableAapt2 << generateAab << isIncrementalBuild;
+ << QStringList{aaptVersion(enableAapt2), packageType(generateAab),
+ dexCompilerVersion(enableD8)}
+ << enableAapt2 << generateAab << isIncrementalBuild << enableD8;
}
QTEST_MAIN(TestBlackboxAndroid)