diff options
Diffstat (limited to 'src/plugins/android/androidmanager.cpp')
-rw-r--r-- | src/plugins/android/androidmanager.cpp | 121 |
1 files changed, 1 insertions, 120 deletions
diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index 35d71e5858..fabcebc6cf 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -35,6 +35,7 @@ #include <cmakeprojectmanager/cmakeprojectconstants.h> #include <utils/algorithm.h> +#include <utils/fileutils.h> #include <utils/qtcassert.h> #include <utils/qtcprocess.h> #include <utils/stringutils.h> @@ -619,126 +620,6 @@ bool AndroidManager::checkCertificateExists(const FilePath &keystorePath, return proc.result() == ProcessResult::FinishedWithSuccess; } -using GradleProperties = QMap<QByteArray, QByteArray>; - -static GradleProperties readGradleProperties(const QString &path) -{ - GradleProperties properties; - QFile file(path); - if (!file.open(QIODevice::ReadOnly)) - return properties; - - const QList<QByteArray> lines = file.readAll().split('\n'); - for (const QByteArray &line : lines) { - if (line.trimmed().startsWith('#')) - continue; - - QList<QByteArray> prop(line.split('=')); - if (prop.size() > 1) - properties[prop.at(0).trimmed()] = prop.at(1).trimmed(); - } - file.close(); - return properties; -} - -static bool mergeGradleProperties(const QString &path, GradleProperties properties) -{ - QFile::remove(path + QLatin1Char('~')); - QFile::rename(path, path + QLatin1Char('~')); - QFile file(path); - if (!file.open(QIODevice::Truncate | QIODevice::WriteOnly | QIODevice::Text)) - return false; - - QFile oldFile(path + QLatin1Char('~')); - if (oldFile.open(QIODevice::ReadOnly)) { - while (!oldFile.atEnd()) { - QByteArray line(oldFile.readLine()); - QList<QByteArray> prop(line.split('=')); - if (prop.size() > 1) { - const auto it = properties.constFind(prop.at(0).trimmed()); - if (it != properties.constEnd()) { - file.write(it.key() + '=' + it.value() + '\n'); - properties.erase(it); - continue; - } - } - file.write(line); - } - oldFile.close(); - } else { - file.write("## This file is automatically generated by QtCreator.\n" - "#\n" - "# This file must *NOT* be checked into Version Control Systems,\n" - "# as it contains information specific to your local configuration.\n\n"); - - } - - for (GradleProperties::const_iterator it = properties.constBegin(); it != properties.constEnd(); - ++it) - file.write(it.key() + '=' + it.value() + '\n'); - - file.close(); - return true; -} - -bool AndroidManager::updateGradleProperties(Target *target, const QString &buildKey) -{ - QtSupport::QtVersion *version = QtSupport::QtKitAspect::qtVersion(target->kit()); - if (!version) - return false; - - QString key = buildKey; - if (key.isEmpty()) { - // FIXME: This case is triggered from AndroidBuildApkWidget::createApplicationGroup - // and should be avoided. - key = target->activeBuildKey(); - } - - QTC_ASSERT(!key.isEmpty(), return false); - const ProjectNode *node = target->project()->findNodeForBuildKey(key); - if (!node) - return false; - - const QString sourceDirName = node->data(Constants::AndroidPackageSourceDir).toString(); - QFileInfo sourceDirInfo(sourceDirName); - const FilePath packageSourceDir = FilePath::fromString(sourceDirInfo.canonicalFilePath()); - - const FilePath gradleWFile = packageSourceDir / "gradlew"; - if (!gradleWFile.exists()) - return false; - - const FilePath wrapperProps = packageSourceDir / "gradle/wrapper/gradle-wrapper.properties"; - if (wrapperProps.exists()) { - GradleProperties wrapperProperties = readGradleProperties(wrapperProps.toString()); - QString distributionUrl = QString::fromLocal8Bit(wrapperProperties["distributionUrl"]); - // Update only old gradle distributionUrl - if (distributionUrl.endsWith(QLatin1String("distributions/gradle-1.12-all.zip"))) { - wrapperProperties["distributionUrl"] = "https\\://services.gradle.org/distributions/gradle-2.2.1-all.zip"; - mergeGradleProperties(wrapperProps.toString(), wrapperProperties); - } - } - - GradleProperties localProperties; - localProperties["sdk.dir"] = AndroidConfigurations::currentConfig().sdkLocation().toString().toLocal8Bit(); - const FilePath localPropertiesFile = packageSourceDir / "local.properties"; - if (!mergeGradleProperties(localPropertiesFile.toString(), localProperties)) - return false; - - const QString gradlePropertiesPath = packageSourceDir.pathAppended("gradle.properties").toString(); - GradleProperties gradleProperties = readGradleProperties(gradlePropertiesPath); - gradleProperties["qt5AndroidDir"] = (version->prefix().toString() + "/src/android/java") - .toLocal8Bit(); - gradleProperties["buildDir"] = ".build"; - gradleProperties["androidCompileSdkVersion"] = buildTargetSDK(target).split(QLatin1Char('-')).last().toLocal8Bit(); - if (gradleProperties["androidBuildToolsVersion"].isEmpty()) { - QVersionNumber buildtoolVersion = AndroidConfigurations::currentConfig().buildToolsVersion(); - if (buildtoolVersion.isNull()) - return false; - gradleProperties["androidBuildToolsVersion"] = buildtoolVersion.toString().toLocal8Bit(); - } - return mergeGradleProperties(gradlePropertiesPath, gradleProperties); -} - QProcess *AndroidManager::runAdbCommandDetached(const QStringList &args, QString *err, bool deleteOnFinish) { |