QmakeAndroid: Move some build-system agnostic items to Android base

Change-Id: I0f258ee5e4afcb3abc7c2bbbaa612b1912a8d2b9
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
This commit is contained in:
hjk
2018-05-31 10:51:37 +02:00
parent e78d5bf28f
commit b774dff4e8
8 changed files with 41 additions and 71 deletions

View File

@@ -149,12 +149,14 @@ bool AndroidBuildApkStep::init(QList<const BuildStep *> &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)

View File

@@ -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");

View File

@@ -194,12 +194,12 @@ bool AndroidDeployQtStep::init(QList<const BuildStep *> &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"));

View File

@@ -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;

View File

@@ -27,6 +27,8 @@
#include "android_global.h"
#include <coreplugin/id.h>
#include <QObject>
#include <QList>
@@ -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