aboutsummaryrefslogtreecommitdiffstats
path: root/share
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2018-08-16 16:03:33 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2018-10-12 14:48:20 +0000
commitc24f09ba99e81a4e141fdcac410f26f1a83f3327 (patch)
tree8abf2d9603ef21c92894964672a4e3f49fb77d29 /share
parent6f3e1896fa567bca8a9f3d35ea26cae518a9313e (diff)
Android: Make sure the manifest file has the right package name
This prevents Android.sdk.packageName to get out of sync with the respective entry in the manifest file. Change-Id: I9cc8af5f74da2515d094b3988104f5037a12574a Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'share')
-rw-r--r--share/qbs/modules/Android/sdk/sdk.qbs34
-rw-r--r--share/qbs/modules/Android/sdk/utils.js2
2 files changed, 33 insertions, 3 deletions
diff --git a/share/qbs/modules/Android/sdk/sdk.qbs b/share/qbs/modules/Android/sdk/sdk.qbs
index 8f4ec14d4..6ed8a2b26 100644
--- a/share/qbs/modules/Android/sdk/sdk.qbs
+++ b/share/qbs/modules/Android/sdk/sdk.qbs
@@ -35,6 +35,7 @@ import qbs.ModUtils
import qbs.Probes
import qbs.TextFile
import qbs.Utilities
+import qbs.Xml
import "utils.js" as SdkUtils
Module {
@@ -234,10 +235,39 @@ Module {
}
}
+ property bool customManifestProcessing: false
+ Group {
+ condition: !Android.sdk.customManifestProcessing
+ fileTagsFilter: "android.manifest_processed"
+ fileTags: "android.manifest_final"
+ }
+ Rule {
+ condition: _enableRules
+ inputs: "android.manifest"
+ Artifact {
+ filePath: FileInfo.joinPaths("processed_manifest", input.fileName)
+ fileTags: "android.manifest_processed"
+ }
+ prepare: {
+ var cmd = new JavaScriptCommand();
+ cmd.description = "Ensuring correct package name in Android manifest file";
+ cmd.sourceCode = function() {
+ var manifestData = new Xml.DomDocument();
+ manifestData.load(input.filePath);
+ var rootElem = manifestData.documentElement();
+ if (!rootElem || !rootElem.isElement() || rootElem.tagName() != "manifest")
+ throw "No manifest tag found in '" + input.filePath + "'.";
+ rootElem.setAttribute("package", product.Android.sdk.packageName);
+ manifestData.save(output.filePath, 4);
+ }
+ return cmd;
+ }
+ }
+
Rule {
condition: _enableRules
multiplex: true
- inputs: ["android.resources", "android.assets", "android.manifest"]
+ inputs: ["android.resources", "android.assets", "android.manifest_final"]
outputFileTags: ["java.java"]
outputArtifacts: {
@@ -382,7 +412,7 @@ Module {
condition: _enableRules
multiplex: true
inputs: [
- "android.resources", "android.assets", "android.manifest",
+ "android.resources", "android.assets", "android.manifest_final",
"android.dex", "android.gdbserver_deployed", "android.stl_deployed",
"android.nativelibrary_deployed", "android.keystore"
]
diff --git a/share/qbs/modules/Android/sdk/utils.js b/share/qbs/modules/Android/sdk/utils.js
index d75743d4d..6a89fd5f2 100644
--- a/share/qbs/modules/Android/sdk/utils.js
+++ b/share/qbs/modules/Android/sdk/utils.js
@@ -115,7 +115,7 @@ function findParentDir(filePath, parentDirName)
function commonAaptPackageArgs(project, product, inputs, outputs, input, output,
explicitlyDependsOn) {
- var manifestFilePath = inputs["android.manifest"][0].filePath;
+ var manifestFilePath = inputs["android.manifest_final"][0].filePath;
var args = ["package", "-f",
"-M", manifestFilePath,
"-I", product.Android.sdk.androidJarFilePath];