diff options
Diffstat (limited to 'src/tools/androiddeployqt/main.cpp')
-rw-r--r-- | src/tools/androiddeployqt/main.cpp | 39 |
1 files changed, 33 insertions, 6 deletions
diff --git a/src/tools/androiddeployqt/main.cpp b/src/tools/androiddeployqt/main.cpp index de746d2eb4..6a3d03c3c3 100644 --- a/src/tools/androiddeployqt/main.cpp +++ b/src/tools/androiddeployqt/main.cpp @@ -157,6 +157,7 @@ struct Options QString sdkPath; QString sdkBuildToolsVersion; QString ndkPath; + QString ndkVersion; QString jdkPath; // Build paths @@ -894,6 +895,30 @@ bool readInputFile(Options *options) } { + const QString ndkPropertiesPath = options->ndkPath + QStringLiteral("/source.properties"); + QFile file(ndkPropertiesPath); + if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { + const char pkgRevisionKey[] = "Pkg.Revision"; + while (!file.atEnd()) { + const QByteArray line = file.readLine(); + if (line.startsWith(pkgRevisionKey)) { + const QList<QByteArray> parts = line.split('='); + if (parts.size() == 2 && parts.at(0).trimmed() == QByteArray(pkgRevisionKey)) { + options->ndkVersion = QString::fromLocal8Bit(parts.at(1).trimmed()); + break; + } + } + } + } + + if (options->ndkVersion.isEmpty()) { + fprintf(stderr, "Couldn't retrieve the NDK version from \"%s\".\n", + qPrintable(ndkPropertiesPath)); + return false; + } + } + + { const QJsonValue toolchainPrefix = jsonObject.value(QLatin1String("toolchain-prefix")); if (toolchainPrefix.isUndefined()) { fprintf(stderr, "No toolchain prefix defined in json file.\n"); @@ -2270,15 +2295,16 @@ static GradleProperties readGradleProperties(const QString &path) static bool mergeGradleProperties(const QString &path, GradleProperties properties) { - QFile::remove(path + QLatin1Char('~')); - QFile::rename(path, path + QLatin1Char('~')); + const QString oldPathStr = path + QLatin1Char('~'); + QFile::remove(oldPathStr); + QFile::rename(path, oldPathStr); QFile file(path); if (!file.open(QIODevice::Truncate | QIODevice::WriteOnly | QIODevice::Text)) { fprintf(stderr, "Can't open file: %s for writing\n", qPrintable(file.fileName())); return false; } - QFile oldFile(path + QLatin1Char('~')); + QFile oldFile(oldPathStr); if (oldFile.open(QIODevice::ReadOnly)) { while (!oldFile.atEnd()) { QByteArray line(oldFile.readLine()); @@ -2294,6 +2320,7 @@ static bool mergeGradleProperties(const QString &path, GradleProperties properti file.write(line); } oldFile.close(); + QFile::remove(oldPathStr); } for (GradleProperties::const_iterator it = properties.begin(); it != properties.end(); ++it) @@ -2328,9 +2355,8 @@ bool buildAndroidProject(const Options &options) { GradleProperties localProperties; localProperties["sdk.dir"] = QDir::fromNativeSeparators(options.sdkPath).toUtf8(); - localProperties["ndk.dir"] = QDir::fromNativeSeparators(options.ndkPath).toUtf8(); - - if (!mergeGradleProperties(options.outputDirectory + QLatin1String("local.properties"), localProperties)) + const QString localPropertiesPath = options.outputDirectory + QLatin1String("local.properties"); + if (!mergeGradleProperties(localPropertiesPath, localProperties)) return false; QString gradlePropertiesPath = options.outputDirectory + QLatin1String("gradle.properties"); @@ -2341,6 +2367,7 @@ bool buildAndroidProject(const Options &options) gradleProperties["androidCompileSdkVersion"] = options.androidPlatform.split(QLatin1Char('-')).last().toLocal8Bit(); gradleProperties["qtMinSdkVersion"] = options.minSdkVersion; gradleProperties["qtTargetSdkVersion"] = options.targetSdkVersion; + gradleProperties["androidNdkVersion"] = options.ndkVersion.toUtf8(); if (gradleProperties["androidBuildToolsVersion"].isEmpty()) gradleProperties["androidBuildToolsVersion"] = options.sdkBuildToolsVersion.toLocal8Bit(); |