diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2018-08-16 16:03:33 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2018-10-12 14:48:20 +0000 |
commit | c24f09ba99e81a4e141fdcac410f26f1a83f3327 (patch) | |
tree | 8abf2d9603ef21c92894964672a4e3f49fb77d29 /share | |
parent | 6f3e1896fa567bca8a9f3d35ea26cae518a9313e (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.qbs | 34 | ||||
-rw-r--r-- | share/qbs/modules/Android/sdk/utils.js | 2 |
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]; |