diff options
author | BogDan Vatra <bogdan@kde.org> | 2013-10-31 13:53:17 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-31 16:44:11 +0100 |
commit | 6c324f9f6c8a6bf66b994e1c3730ee7f6a494643 (patch) | |
tree | d5cfe38f78b0d68d6cf3c3944b161eed5186740c | |
parent | 093e82d8af2442ad3b6e3f1b01dfe76f9d0b2e95 (diff) |
Remove android specific qmake variables.
Change-Id: I77b0d880abb0a78baf02c2b6be33ca61f9233500
Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com>
-rw-r--r-- | src/androiddeployqt/main.cpp | 99 |
1 files changed, 45 insertions, 54 deletions
diff --git a/src/androiddeployqt/main.cpp b/src/androiddeployqt/main.cpp index 31876668b..ff240ca72 100644 --- a/src/androiddeployqt/main.cpp +++ b/src/androiddeployqt/main.cpp @@ -48,8 +48,6 @@ #include <QJsonValue> #include <QDebug> #include <QXmlStreamReader> -#include <QXmlStreamAttribute> -#include <QXmlStreamAttributes> #include <QDateTime> #include <QStandardPaths> #include <QUuid> @@ -79,8 +77,8 @@ struct Options Options() : helpRequested(false) , verbose(false) - , minimumAndroidVersion(-1) - , targetAndroidVersion(-1) + , minimumAndroidVersion(9) + , targetAndroidVersion(10) , deploymentMechanism(Bundled) , releasePackage(false) , digestAlg(QLatin1String("SHA1")) @@ -133,7 +131,6 @@ struct Options int minimumAndroidVersion; int targetAndroidVersion; DeploymentMechanism deploymentMechanism; - QString appName; QString packageName; QStringList extraLibs; @@ -564,46 +561,7 @@ bool readInputFile(Options *options) options->ndkHost = ndkHost.toString(); } - { - QJsonValue androidMinimumVersion = jsonObject.value("android-minimum-version"); - if (!androidMinimumVersion.isUndefined()) { - options->minimumAndroidVersion = androidMinimumVersion.toInt(); - if (options->minimumAndroidVersion < 9) - fprintf(stderr, "Warning: Unsupported minimum version"); - } - } - - { - QJsonValue androidTargetVersion = jsonObject.value("android-target-version"); - if (!androidTargetVersion.isUndefined()) { - options->targetAndroidVersion = androidTargetVersion.toInt(); - if (options->targetAndroidVersion < 9) - fprintf(stderr, "Warning: Unsupported target version"); - } - } - - if (options->minimumAndroidVersion < 0) { - options->minimumAndroidVersion = 9; - if (options->targetAndroidVersion < 0) - options->targetAndroidVersion = 14; - } - - { - QJsonValue androidAppName = jsonObject.value("android-app-name"); - if (!androidAppName.isUndefined()) - options->appName = androidAppName.toString(); - else - options->appName = QFileInfo(options->applicationBinary).baseName().mid(sizeof("lib") - 1); - } - - - { - QJsonValue androidPackage = jsonObject.value("android-package"); - if (!androidPackage.isUndefined()) - options->packageName = androidPackage.toString(); - else - options->packageName = QString::fromLatin1("org.qtproject.example.%1").arg(options->appName); - } + options->packageName = QString::fromLatin1("org.qtproject.example.%1").arg(QFileInfo(options->applicationBinary).baseName().mid(sizeof("lib") - 1)); { QJsonValue extraLibs = jsonObject.value("android-extra-libs"); @@ -802,15 +760,11 @@ bool updateLibsXml(const Options &options) return true; } -bool updateAndroidManifest(const Options &options) +bool updateAndroidManifest(Options &options) { if (options.verbose) fprintf(stdout, " -- AndroidManifest.xml \n"); - QString usesSdk = QString("<uses-sdk android:minSdkVersion=\"%1\" %2 />").arg(options.minimumAndroidVersion); - if (options.targetAndroidVersion >= 0) - usesSdk = usesSdk.arg(QString::fromLatin1("android:targetSdkVersion=\"%1\"").arg(options.targetAndroidVersion)); - QStringList localLibs = options.localLibs; // If .pro file overrides dependency detection, we need to see which platform plugin they picked @@ -843,16 +797,54 @@ bool updateAndroidManifest(const 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_USES_SDK%% -->")] = usesSdk; 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"); replacements[QLatin1String("-- %%USE_LOCAL_QT_LIBS%% --")] = (options.deploymentMechanism != Options::Ministro) ? QString::fromLatin1("1") : QString::fromLatin1("0"); - if (!updateFile(options.outputDirectory + QLatin1String("/AndroidManifest.xml"), replacements)) + + QString androidManifestPath = options.outputDirectory + QLatin1String("/AndroidManifest.xml"); + if (!updateFile(androidManifestPath, replacements)) return false; + // read the package, min & target sdk API levels from manifest file. + QFile androidManifestXml(androidManifestPath); + if (androidManifestXml.exists()) { + if (!androidManifestXml.open(QIODevice::ReadOnly)) { + fprintf(stderr, "Cannot open %s for reading.\n", qPrintable(androidManifestPath)); + return false; + } + + QXmlStreamReader reader(&androidManifestXml); + while (!reader.atEnd()) { + reader.readNext(); + + if (reader.isStartElement()) { + if (reader.name() == QLatin1String("manifest")) { + if (!reader.attributes().hasAttribute(QLatin1String("package"))) { + fprintf(stderr, "Invalid android manifest file: %s\n", qPrintable(androidManifestPath)); + return false; + } + options.packageName = reader.attributes().value(QLatin1String("package")).toString(); + } else if (reader.name() == QLatin1String("uses-sdk")) { + if (reader.attributes().hasAttribute(QLatin1String("android:minSdkVersion"))) + options.minimumAndroidVersion = reader.attributes().value(QLatin1String("android:minSdkVersion")).toInt(); + + if (reader.attributes().hasAttribute(QLatin1String("android:targetSdkVersion"))) + options.targetAndroidVersion = reader.attributes().value(QLatin1String("android:targetSdkVersion")).toInt(); + } + } + } + + if (reader.hasError()) { + fprintf(stderr, "Error in %s: %s\n", qPrintable(androidManifestPath), qPrintable(reader.errorString())); + return false; + } + } else { + fprintf(stderr, "No android manifest file"); + return false; + } return true; } @@ -862,7 +854,6 @@ bool updateStringsXml(const Options &options) fprintf(stdout, " -- res/values/strings.xml\n"); QHash<QString, QString> replacements; - replacements[QLatin1String("<!-- %%INSERT_APP_NAME%% -->")] = options.appName; QString fileName = options.outputDirectory + QLatin1String("/res/values/strings.xml"); if (!QFile::exists(fileName)) { @@ -936,7 +927,7 @@ bool updateJavaFiles(const Options &options) return true; } -bool updateAndroidFiles(const Options &options) +bool updateAndroidFiles(Options &options) { if (options.verbose) fprintf(stdout, "Updating Android package files with project settings.\n"); |