diff --git a/src/plugins/android/androidbuildapkstep.cpp b/src/plugins/android/androidbuildapkstep.cpp index 3ebbcb2dbc5..444407ba0e3 100644 --- a/src/plugins/android/androidbuildapkstep.cpp +++ b/src/plugins/android/androidbuildapkstep.cpp @@ -149,12 +149,14 @@ bool AndroidBuildApkStep::init(QList &earlierSteps) parser->setProjectFileList(Utils::transform(target()->project()->files(ProjectExplorer::Project::AllFiles), &Utils::FileName::toString)); - parser->setSourceDirectory(AndroidManager::androidQtSupport(target())->packageSourceDir(target())); + AndroidQtSupport *qtSupport = AndroidManager::androidQtSupport(target()); + QFileInfo sourceDirInfo(qtSupport->targetDataItem(Constants::AndroidPackageSourceDir, target())); + parser->setSourceDirectory(Utils::FileName::fromString(sourceDirInfo.canonicalFilePath())); parser->setBuildDirectory(Utils::FileName::fromString(bc->buildDirectory().appendPath(Constants::ANDROID_BUILDDIRECTORY).toString())); setOutputParser(parser); m_openPackageLocationForRun = m_openPackageLocation; - m_apkPath = AndroidManager::androidQtSupport(target())->apkPath(target()).toString(); + m_apkPath = qtSupport->apkPath(target()).toString(); bool result = AbstractProcessStep::init(earlierSteps); if (!result) diff --git a/src/plugins/android/androiddebugsupport.cpp b/src/plugins/android/androiddebugsupport.cpp index 11fabdccfdb..475643eddd5 100644 --- a/src/plugins/android/androiddebugsupport.cpp +++ b/src/plugins/android/androiddebugsupport.cpp @@ -125,7 +125,7 @@ void AndroidDebugSupport::start() AndroidQtSupport *qtSupport = AndroidManager::androidQtSupport(target); QStringList solibSearchPath = qtSupport->soLibSearchPath(target); solibSearchPath.append(qtSoPaths(qtVersion)); - solibSearchPath.append(uniquePaths(qtSupport->androidExtraLibs(target))); + solibSearchPath.append(uniquePaths(qtSupport->targetData(Android::Constants::AndroidExtraLibs, target))); setSolibSearchPath(solibSearchPath); setSymbolFile(target->activeBuildConfiguration()->buildDirectory().toString() + "/app_process"); diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index a9cbe00fdf0..cd5803778b4 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -194,12 +194,12 @@ bool AndroidDeployQtStep::init(QList &earlierSteps) Utils::QtcProcess::addArg(&m_androiddeployqtArgs, m_workingDirectory); Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("--no-build")); Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("--input")); - tmp = AndroidManager::androidQtSupport(target())->androiddeployJsonPath(target()); - if (tmp.isEmpty()) { + const QString jsonFile = qtSupport->targetDataItem(Constants::AndroidDeploySettingsFile, target()); + if (jsonFile.isEmpty()) { emit addOutput(tr("Cannot find the androiddeploy Json file."), OutputFormat::Stderr); return false; } - Utils::QtcProcess::addArg(&m_androiddeployqtArgs, tmp.toString()); + Utils::QtcProcess::addArg(&m_androiddeployqtArgs, jsonFile); if (androidBuildApkStep && androidBuildApkStep->useMinistro()) { Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("--deployment")); Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("ministro")); diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index de927adc41c..ebf2349134d 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -69,6 +69,9 @@ namespace { } // anonymous namespace + +using namespace Utils; + namespace Android { using namespace Internal; @@ -203,9 +206,12 @@ Utils::FileName AndroidManager::dirPath(ProjectExplorer::Target *target) Utils::FileName AndroidManager::manifestSourcePath(ProjectExplorer::Target *target) { if (AndroidQtSupport *androidQtSupport = AndroidManager::androidQtSupport(target)) { - Utils::FileName source = androidQtSupport->manifestSourcePath(target); - if (!source.isEmpty()) - return source; + const QString packageSource = androidQtSupport->targetDataItem(Android::Constants::AndroidPackageSourceDir, target); + if (!packageSource.isEmpty()) { + const FileName manifest = FileName::fromUserInput(packageSource + "/AndroidManifest.xml"); + if (manifest.exists()) + return manifest; + } } return manifestPath(target); } @@ -545,7 +551,8 @@ bool AndroidManager::updateGradleProperties(ProjectExplorer::Target *target) if (!qtSupport) return false; - Utils::FileName packageSourceDir = qtSupport->packageSourceDir(target); + QFileInfo sourceDirInfo(qtSupport->targetDataItem(Constants::AndroidPackageSourceDir, target)); + FileName packageSourceDir = FileName::fromString(sourceDirInfo.canonicalFilePath()); if (!packageSourceDir.appendPath("gradlew").exists()) return false; diff --git a/src/plugins/android/androidqtsupport.h b/src/plugins/android/androidqtsupport.h index ec5d5694952..4d9cd157c52 100644 --- a/src/plugins/android/androidqtsupport.h +++ b/src/plugins/android/androidqtsupport.h @@ -27,6 +27,8 @@ #include "android_global.h" +#include + #include #include @@ -40,6 +42,13 @@ namespace ProjectExplorer { namespace Utils { class FileName; } namespace Android { +namespace Constants { + +const char AndroidPackageSourceDir[] = "AndroidPackageSourceDir"; +const char AndroidDeploySettingsFile[] = "AndroidDeploySettingsFile"; +const char AndroidExtraLibs[] = "AndroidExtraLibs"; + +} // namespace Constants class ANDROID_EXPORT AndroidQtSupport : public QObject { @@ -58,15 +67,13 @@ public: virtual bool canHandle(const ProjectExplorer::Target *target) const = 0; virtual QStringList soLibSearchPath(const ProjectExplorer::Target *target) const = 0; - virtual QStringList androidExtraLibs(const ProjectExplorer::Target *target) const = 0; virtual QStringList projectTargetApplications(const ProjectExplorer::Target *target) const = 0; virtual Utils::FileName apkPath(const ProjectExplorer::Target *target) const; virtual Utils::FileName androiddeployqtPath(const ProjectExplorer::Target *target) const = 0; - virtual Utils::FileName androiddeployJsonPath(const ProjectExplorer::Target *target) const = 0; virtual void manifestSaved(const ProjectExplorer::Target *target) = 0; - virtual Utils::FileName manifestSourcePath(const ProjectExplorer::Target *target) = 0; - virtual QString deploySettingsFile(const ProjectExplorer::Target *target) const = 0; - virtual Utils::FileName packageSourceDir(const ProjectExplorer::Target *target) const = 0; + + virtual QString targetDataItem(Core::Id role, const ProjectExplorer::Target *target) const = 0; + virtual QStringList targetData(Core::Id role, const ProjectExplorer::Target *target) const = 0; }; } // namespace Android diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp index cc3ee896ba1..a5774b2b608 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp @@ -92,7 +92,8 @@ bool QmakeAndroidBuildApkStep::init(QList &earlierSteps) ProjectExplorer::BuildConfiguration *bc = buildConfiguration(); QString outputDir = bc->buildDirectory().appendPath(Constants::ANDROID_BUILDDIRECTORY).toString(); - QString inputFile = AndroidManager::androidQtSupport(target())->deploySettingsFile(target()); + QString inputFile = AndroidManager::androidQtSupport(target()) + ->targetDataItem(Constants::AndroidDeploySettingsFile, target()); if (inputFile.isEmpty()) { m_skipBuilding = true; return true; diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp index dc1bdc7624c..b23f3b5c77d 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp @@ -68,11 +68,11 @@ QStringList QmakeAndroidSupport::targetData(Core::Id role, const Target *target) QTC_ASSERT(profileNode, return {}); Variable var = {}; - if (role == Constants::AndroidPackageSourceDir) + if (role == Android::Constants::AndroidPackageSourceDir) var = Variable::AndroidPackageSourceDir; - else if (role == Constants::AndroidDeploySettingsFile) + else if (role == Android::Constants::AndroidDeploySettingsFile) var = Variable::AndroidDeploySettingsFile; - else if (role == Constants::AndroidExtraLibs) + else if (role == Android::Constants::AndroidExtraLibs) var = Variable::AndroidExtraLibs; else QTC_CHECK(false); @@ -104,7 +104,9 @@ QStringList QmakeAndroidSupport::soLibSearchPath(const ProjectExplorer::Target * + '/' + destDir.toString())); res.insert(destDir.toString()); } - QFile deploymentSettings(androiddeployJsonPath(target).toString()); + + const QString jsonFile = targetDataItem(Android::Constants::AndroidDeploySettingsFile, target); + QFile deploymentSettings(jsonFile); if (deploymentSettings.open(QIODevice::ReadOnly)) { QJsonParseError error; QJsonDocument doc = QJsonDocument::fromJson(deploymentSettings.readAll(), &error); @@ -120,11 +122,6 @@ QStringList QmakeAndroidSupport::soLibSearchPath(const ProjectExplorer::Target * return res.toList(); } -QStringList QmakeAndroidSupport::androidExtraLibs(const ProjectExplorer::Target *target) const -{ - return targetData(Constants::AndroidExtraLibs, target); -} - QStringList QmakeAndroidSupport::projectTargetApplications(const ProjectExplorer::Target *target) const { QStringList apps; @@ -157,12 +154,6 @@ Utils::FileName QmakeAndroidSupport::androiddeployqtPath(const ProjectExplorer:: return Utils::FileName::fromString(command); } -Utils::FileName QmakeAndroidSupport::androiddeployJsonPath(const ProjectExplorer::Target *target) const -{ - const QString inputFile = targetDataItem(Constants::AndroidDeploySettingsFile, target); - return FileName::fromString(inputFile); -} - void QmakeAndroidSupport::manifestSaved(const ProjectExplorer::Target *target) { ProjectExplorer::BuildConfiguration *bc = target->activeBuildConfiguration(); @@ -170,27 +161,5 @@ void QmakeAndroidSupport::manifestSaved(const ProjectExplorer::Target *target) qbc->manifestSaved(); } -Utils::FileName QmakeAndroidSupport::manifestSourcePath(const ProjectExplorer::Target *target) -{ - const QString packageSource = targetDataItem(Constants::AndroidPackageSourceDir, target); - if (!packageSource.isEmpty()) { - const auto manifest = FileName::fromUserInput(packageSource + "/AndroidManifest.xml"); - if (manifest.exists()) - return manifest; - } - return Utils::FileName(); -} - -QString QmakeAndroidSupport::deploySettingsFile(const Target *target) const -{ - return targetDataItem(Constants::AndroidDeploySettingsFile, target); -} - -FileName QmakeAndroidSupport::packageSourceDir(const Target *target) const -{ - const QFileInfo sourceDirInfo(targetDataItem(Constants::AndroidPackageSourceDir, target)); - return FileName::fromString(sourceDirInfo.canonicalFilePath()); -} - } // namespace Internal } // namespace QmakeAndroidSupport diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h index fea89cee116..47d1f2fa33a 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h +++ b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h @@ -27,18 +27,7 @@ #include -#include - namespace QmakeAndroidSupport { - -namespace Constants { - -const char AndroidPackageSourceDir[] = "AndroidPackageSourceDir"; -const char AndroidDeploySettingsFile[] = "AndroidDeploySettingsFile"; -const char AndroidExtraLibs[] = "AndroidExtraLibs"; - -} // namespace Constants - namespace Internal { class QmakeAndroidSupport : public Android::AndroidQtSupport @@ -48,18 +37,13 @@ class QmakeAndroidSupport : public Android::AndroidQtSupport public: bool canHandle(const ProjectExplorer::Target *target) const override; QStringList soLibSearchPath(const ProjectExplorer::Target *target) const override; - QStringList androidExtraLibs(const ProjectExplorer::Target *target) const override; QStringList projectTargetApplications(const ProjectExplorer::Target *target) const override; Utils::FileName androiddeployqtPath(const ProjectExplorer::Target *target) const override; - Utils::FileName androiddeployJsonPath(const ProjectExplorer::Target *target) const override; void manifestSaved(const ProjectExplorer::Target *target) override; - Utils::FileName manifestSourcePath(const ProjectExplorer::Target *target) override; - Utils::FileName packageSourceDir(const ProjectExplorer::Target *target) const override; - QString deploySettingsFile(const ProjectExplorer::Target *target) const override; - QString targetDataItem(Core::Id role, const ProjectExplorer::Target *target) const; - QStringList targetData(Core::Id role, const ProjectExplorer::Target *target) const; + QString targetDataItem(Core::Id role, const ProjectExplorer::Target *target) const override; + QStringList targetData(Core::Id role, const ProjectExplorer::Target *target) const override; }; } // namespace Internal