summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndy Shaw <andy.shaw@qt.io>2018-10-15 09:23:26 +0200
committerAndy Shaw <andy.shaw@qt.io>2019-02-04 16:57:07 +0000
commit9435526d507611b8b54f7c65df9febdde193c7bf (patch)
tree49544be7f75214b6f8710e9c6cbae3cee25ac7b5
parent29d5a287abc3d3c9b75619db18042dea66236cb3 (diff)
qmake: Add variables for setting the version number and name in Android
This makes it much easier to have the version information set for an Android APK without having to manually modify the AndroidManifest.xml each time. [ChangeLog][Android][qmake] Can now set the version name and code for Android using ANDROID_VERSION_NAME and ANDROID_VERSION_CODE respectively in the pro file. Change-Id: Ie6813bc3a7444f7baa5e772b93bc2695d9b81e57 Done-with: Markus Maier <markus.maier@rosenberger.de> Reviewed-by: Markus Maier <markus.maier@rosenberger.de> Reviewed-by: BogDan Vatra <bogdan@kdab.com>
-rw-r--r--mkspecs/features/android/android_deployment_settings.prf8
-rw-r--r--src/android/templates/AndroidManifest.xml2
-rw-r--r--src/tools/androiddeployqt/main.cpp22
3 files changed, 31 insertions, 1 deletions
diff --git a/mkspecs/features/android/android_deployment_settings.prf b/mkspecs/features/android/android_deployment_settings.prf
index 0db3230ce7..ad826bdad3 100644
--- a/mkspecs/features/android/android_deployment_settings.prf
+++ b/mkspecs/features/android/android_deployment_settings.prf
@@ -58,6 +58,14 @@ contains(TEMPLATE, ".*app"):!build_pass:!android-embedded {
!isEmpty(ANDROID_PACKAGE_SOURCE_DIR): \
FILE_CONTENT += " \"android-package-source-directory\": $$emitString($$ANDROID_PACKAGE_SOURCE_DIR),"
+ # Android-specific version string
+ !isEmpty(ANDROID_VERSION_NAME): \
+ FILE_CONTENT += " \"android-version-name\": $$emitString($$ANDROID_VERSION_NAME),"
+
+ # Android-specific version number
+ !isEmpty(ANDROID_VERSION_CODE): \
+ FILE_CONTENT += " \"android-version-code\": $$emitString($$ANDROID_VERSION_CODE),"
+
!isEmpty(ANDROID_EXTRA_LIBS): \
FILE_CONTENT += " \"android-extra-libs\": $$emitString($$join(ANDROID_EXTRA_LIBS, ",")),"
diff --git a/src/android/templates/AndroidManifest.xml b/src/android/templates/AndroidManifest.xml
index 100fc99e80..cb97002560 100644
--- a/src/android/templates/AndroidManifest.xml
+++ b/src/android/templates/AndroidManifest.xml
@@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?>
-<manifest package="org.qtproject.example" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="1.0" android:versionCode="1" android:installLocation="auto">
+<manifest package="org.qtproject.example" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="-- %%INSERT_VERSION_NAME%% --" android:versionCode="-- %%INSERT_VERSION_CODE%% --" android:installLocation="auto">
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="28"/>
<!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
diff --git a/src/tools/androiddeployqt/main.cpp b/src/tools/androiddeployqt/main.cpp
index af3a3ae39a..9402a1a881 100644
--- a/src/tools/androiddeployqt/main.cpp
+++ b/src/tools/androiddeployqt/main.cpp
@@ -148,6 +148,10 @@ struct Options
QString rootPath;
QStringList qmlImportPaths;
+ // Versioning
+ QString versionName;
+ QString versionCode;
+
// lib c++ path
QString stdCppPath;
QString stdCppName = QStringLiteral("gnustl_shared");
@@ -757,6 +761,22 @@ bool readInputFile(Options *options)
}
{
+ const QJsonValue androidVersionName = jsonObject.value(QStringLiteral("android-version-name"));
+ if (!androidVersionName.isUndefined())
+ options->versionName = androidVersionName.toString();
+ else
+ options->versionName = QStringLiteral("1.0");
+ }
+
+ {
+ const QJsonValue androidVersionCode = jsonObject.value(QStringLiteral("android-version-code"));
+ if (!androidVersionCode.isUndefined())
+ options->versionCode = androidVersionCode.toString();
+ else
+ options->versionCode = QStringLiteral("1");
+ }
+
+ {
const QJsonValue applicationBinary = jsonObject.value(QStringLiteral("application-binary"));
if (applicationBinary.isUndefined()) {
fprintf(stderr, "No application binary defined in json file.\n");
@@ -1324,6 +1344,8 @@ bool updateAndroidManifest(Options &options)
replacements[QLatin1String("-- %%INSERT_LOCAL_LIBS%% --")] = localLibs.join(QLatin1Char(':'));
replacements[QLatin1String("-- %%INSERT_LOCAL_JARS%% --")] = options.localJars.join(QLatin1Char(':'));
replacements[QLatin1String("-- %%INSERT_INIT_CLASSES%% --")] = options.initClasses.join(QLatin1Char(':'));
+ replacements[QLatin1String("-- %%INSERT_VERSION_NAME%% --")] = options.versionName;
+ replacements[QLatin1String("-- %%INSERT_VERSION_CODE%% --")] = options.versionCode;
replacements[QLatin1String("package=\"org.qtproject.example\"")] = QString::fromLatin1("package=\"%1\"").arg(options.packageName);
replacements[QLatin1String("-- %%BUNDLE_LOCAL_QT_LIBS%% --")]
= (options.deploymentMechanism == Options::Bundled) ? QString::fromLatin1("1") : QString::fromLatin1("0");