aboutsummaryrefslogtreecommitdiffstats
path: root/share/qbs/modules/Android/sdk/sdk.qbs
diff options
context:
space:
mode:
Diffstat (limited to 'share/qbs/modules/Android/sdk/sdk.qbs')
-rw-r--r--share/qbs/modules/Android/sdk/sdk.qbs75
1 files changed, 72 insertions, 3 deletions
diff --git a/share/qbs/modules/Android/sdk/sdk.qbs b/share/qbs/modules/Android/sdk/sdk.qbs
index 84492a869..681b3da94 100644
--- a/share/qbs/modules/Android/sdk/sdk.qbs
+++ b/share/qbs/modules/Android/sdk/sdk.qbs
@@ -139,7 +139,14 @@ Module {
}
property path buildToolsDir: FileInfo.joinPaths(sdkDir, "build-tools", buildToolsVersion)
- property path aaptFilePath: FileInfo.joinPaths(buildToolsDir, "aapt")
+ property string aaptName: "aapt"
+ PropertyOptions {
+ name: "aaptName"
+ allowedValues: ["aapt", "aapt2"]
+ }
+ property path aaptFilePath: FileInfo.joinPaths(buildToolsDir, aaptName)
+ readonly property bool _enableAapt2: aaptName === "aapt2"
+
property path apksignerFilePath: FileInfo.joinPaths(buildToolsDir, "apksigner")
property path aidlFilePath: FileInfo.joinPaths(buildToolsDir, "aidl")
property path dxFilePath: FileInfo.joinPaths(buildToolsDir, "dx")
@@ -151,6 +158,8 @@ Module {
property path generatedJavaFilesBaseDir: FileInfo.joinPaths(product.buildDirectory, "gen")
property path generatedJavaFilesDir: FileInfo.joinPaths(generatedJavaFilesBaseDir,
(packageName || "").split('.').join('/'))
+ property path compiledResourcesDir: FileInfo.joinPaths(product.buildDirectory,
+ "compiled_resources")
property string apkContentsDir: FileInfo.joinPaths(product.buildDirectory, "bin")
property string debugKeyStorePath: FileInfo.joinPaths(
Environment.getEnv(qbs.hostOS.contains("windows")
@@ -311,7 +320,7 @@ Module {
}
Rule {
- condition: _enableRules
+ condition: _enableRules && !_enableAapt2
multiplex: true
inputs: ["android.resources", "android.assets", "android.manifest_final"]
@@ -334,6 +343,51 @@ Module {
}
Rule {
+ condition: _enableRules && _enableAapt2
+ inputs: ["android.resources"]
+ outputArtifacts: {
+ var outputs = [];
+ var resources = inputs["android.resources"];
+ for (var i = 0; i < resources.length; ++i) {
+ var filePath = resources[i].filePath;
+ var resourceFileName = SdkUtils.generateAapt2ResourceFileName(filePath);
+ var compiledName = FileInfo.joinPaths(product.Android.sdk.compiledResourcesDir,
+ resourceFileName);
+ outputs.push({filePath: compiledName, fileTags: "android.resources_compiled"});
+ }
+ return outputs;
+ }
+ outputFileTags: ["android.resources_compiled"]
+
+ prepare: SdkUtils.prepareAapt2CompileResource.apply(SdkUtils, arguments)
+ }
+
+ Rule {
+ condition: _enableRules && _enableAapt2
+ multiplex: true
+ inputs: ["android.resources_compiled", "android.assets", "android.manifest_final"]
+ outputFileTags: ["java.java", "android.apk_base"]
+ outputArtifacts: {
+ var artifacts = [];
+ artifacts.push({
+ filePath: product.Android.sdk.apkBaseName + ".apk_base",
+ fileTags: ["android.apk_base"]
+ });
+ var resources = inputs["android.resources_compiled"];
+ if (resources && resources.length) {
+ artifacts.push({
+ filePath: FileInfo.joinPaths(product.Android.sdk.generatedJavaFilesDir,
+ "R.java"),
+ fileTags: ["java.java"]
+ });
+ }
+
+ return artifacts;
+ }
+ prepare: SdkUtils.prepareAapt2Link.apply(SdkUtils, arguments)
+ }
+
+ Rule {
condition: _enableRules
multiplex: true
@@ -421,7 +475,7 @@ Module {
}
Rule {
- condition: _enableRules
+ condition: _enableRules && !_enableAapt2
multiplex: true
inputs: [
"android.resources", "android.assets", "android.manifest_final",
@@ -434,4 +488,19 @@ Module {
}
prepare: SdkUtils.prepareAaptPackage.apply(SdkUtils, arguments)
}
+
+ Rule {
+ condition: _enableRules && _enableAapt2
+ multiplex: true
+ inputs: [
+ "android.apk_base", "android.manifest_final",
+ "android.dex", "android.stl_deployed",
+ "android.nativelibrary_deployed", "android.keystore"
+ ]
+ Artifact {
+ filePath: product.Android.sdk.apkBaseName + ".apk"
+ fileTags: "android.apk"
+ }
+ prepare: SdkUtils.prepareApkPackage.apply(SdkUtils, arguments)
+ }
}