aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/android/androidmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/android/androidmanager.cpp')
-rw-r--r--src/plugins/android/androidmanager.cpp121
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)
{