diff options
-rw-r--r-- | share/qbs/module-providers/Qt/templates/android_support.qbs | 9 | ||||
-rw-r--r-- | share/qbs/modules/Android/sdk/sdk.qbs | 9 | ||||
-rw-r--r-- | share/qbs/modules/Android/sdk/utils.js | 55 | ||||
-rw-r--r-- | tests/auto/blackbox/find/find-android.qbs | 1 | ||||
-rw-r--r-- | tests/auto/blackbox/tst_blackboxandroid.cpp | 108 |
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) |