diff options
author | Andy Shaw <andy.shaw@qt.io> | 2018-10-15 09:23:26 +0200 |
---|---|---|
committer | Andy Shaw <andy.shaw@qt.io> | 2019-02-04 16:57:07 +0000 |
commit | 9435526d507611b8b54f7c65df9febdde193c7bf (patch) | |
tree | 49544be7f75214b6f8710e9c6cbae3cee25ac7b5 | |
parent | 29d5a287abc3d3c9b75619db18042dea66236cb3 (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.prf | 8 | ||||
-rw-r--r-- | src/android/templates/AndroidManifest.xml | 2 | ||||
-rw-r--r-- | src/tools/androiddeployqt/main.cpp | 22 |
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"); |