diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2019-02-18 17:38:37 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2019-02-27 11:55:49 +0000 |
commit | 50eb4d183ccb526874cefe73c7f4c2129769aa4a (patch) | |
tree | b5fc6895c8d05f9e76c714274c33083425646464 | |
parent | 4fd17d627106fde01284075038e15cc0680611bc (diff) |
Android: Check for valid package name upon package creation
That's nicer than letting users get a cryptic error message when they
try to install their package on the device.
Change-Id: Ie5321a28475f879f991c4440c7e64c1c3ebd5a9d
Fixes: QBS-1428
Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
-rw-r--r-- | share/qbs/modules/Android/sdk/sdk.qbs | 11 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/minimal-native/minimal-native.qbs | 2 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/minimal-native/src/main/java/my/minimal/MinimalNative.java (renamed from tests/auto/blackbox/testdata-android/minimal-native/src/main/java/minimal/MinimalNative.java) | 0 | ||||
-rw-r--r-- | tests/auto/blackbox/testdata-android/qml-app/qml-app.qbs | 2 |
4 files changed, 14 insertions, 1 deletions
diff --git a/share/qbs/modules/Android/sdk/sdk.qbs b/share/qbs/modules/Android/sdk/sdk.qbs index 79ec9ad81..14ad92fdf 100644 --- a/share/qbs/modules/Android/sdk/sdk.qbs +++ b/share/qbs/modules/Android/sdk/sdk.qbs @@ -257,7 +257,16 @@ Module { 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); + + // Quick sanity check. Don't try to be fancy; let's not risk rejecting valid names. + var packageName = product.Android.sdk.packageName; + if (!packageName.match(/^[^.]+(?:\.[^.]+)+$/)) { + throw "Package name '" + packageName + "' is not valid. Please set " + + "Android.sdk.packageName to a name following the " + + "'com.mycompany.myproduct' pattern." + } + rootElem.setAttribute("package", packageName); + manifestData.save(output.filePath, 4); } return cmd; diff --git a/tests/auto/blackbox/testdata-android/minimal-native/minimal-native.qbs b/tests/auto/blackbox/testdata-android/minimal-native/minimal-native.qbs index 8cdda7a3c..570152707 100644 --- a/tests/auto/blackbox/testdata-android/minimal-native/minimal-native.qbs +++ b/tests/auto/blackbox/testdata-android/minimal-native/minimal-native.qbs @@ -2,6 +2,8 @@ CppApplication { name: "minimalnative" qbs.buildVariant: "release" Properties { condition: qbs.toolchain.contains("clang"); Android.ndk.appStl: "c++_shared" } + Android.sdk.packageName: "my.minimalnative" + Android.sdk.apkBaseName: name Android.ndk.appStl: "stlport_shared" files: "src/main/native/native.c" Group { diff --git a/tests/auto/blackbox/testdata-android/minimal-native/src/main/java/minimal/MinimalNative.java b/tests/auto/blackbox/testdata-android/minimal-native/src/main/java/my/minimal/MinimalNative.java index 1464d2593..1464d2593 100644 --- a/tests/auto/blackbox/testdata-android/minimal-native/src/main/java/minimal/MinimalNative.java +++ b/tests/auto/blackbox/testdata-android/minimal-native/src/main/java/my/minimal/MinimalNative.java diff --git a/tests/auto/blackbox/testdata-android/qml-app/qml-app.qbs b/tests/auto/blackbox/testdata-android/qml-app/qml-app.qbs index 56b9d6eaf..e91a14902 100644 --- a/tests/auto/blackbox/testdata-android/qml-app/qml-app.qbs +++ b/tests/auto/blackbox/testdata-android/qml-app/qml-app.qbs @@ -6,6 +6,8 @@ QtApplication { condition: qbs.targetOS.contains("android") Qt.android_support.extraPrefixDirs: path } + Android.sdk.packageName: "my.qmlapp" + Android.sdk.apkBaseName: name property stringList qmlImportPaths: path files: [ "main.cpp", |