summaryrefslogtreecommitdiff
path: root/src/plugins/android/androidmanager.cpp
diff options
context:
space:
mode:
authorBogDan Vatra <bogdan@kde.org>2014-06-25 15:42:11 +0200
committerDaniel Teske <daniel.teske@digia.com>2014-07-21 12:41:28 +0200
commit64e5a543a845d8d800504206a42c58d4e28ac89c (patch)
tree205faff83b9fb890c65309fe4c7cc7878826f515 /src/plugins/android/androidmanager.cpp
parent4657ac7452662d19823412e82d599bf4079a3c4d (diff)
downloadqt-creator-64e5a543a845d8d800504206a42c58d4e28ac89c.tar.gz
Move qmake specific part to qmake plugin, generalize android support
- Split up androiddeployqt into two steps: One building the apk, and one deploying it to the device. - The build apk step base class AndroidBuildApkStep is ihneritaged by the qmake specific class QmakeAndroidBuildApkStep. - The deployment step is still called androiddeployqt - Move all qmake specific code to the qmakeprojectmanager plguin - Flip the depencency between the android and qmake plugin, now the qmake plugin depends on the android plugin, implementing a interface the android plugin provides. - Note: This removes the debug deployment for now. Change-Id: I1c386640159ed14b637668abde8eb3b9009ab803 Reviewed-by: BogDan Vatra <bogdan@kde.org>
Diffstat (limited to 'src/plugins/android/androidmanager.cpp')
-rw-r--r--src/plugins/android/androidmanager.cpp124
1 files changed, 49 insertions, 75 deletions
diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp
index cd22d4443c..922007e8e5 100644
--- a/src/plugins/android/androidmanager.cpp
+++ b/src/plugins/android/androidmanager.cpp
@@ -35,6 +35,8 @@
#include "androidtoolchain.h"
#include "androiddeployqtstep.h"
#include "androidqtsupport.h"
+#include "androidqtversion.h"
+#include "androidbuildapkstep.h"
#include <coreplugin/documentmanager.h>
#include <coreplugin/messagemanager.h>
@@ -42,13 +44,12 @@
#include <extensionsystem/pluginmanager.h>
+#include <projectexplorer/buildconfiguration.h>
+#include <projectexplorer/project.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/session.h>
#include <projectexplorer/target.h>
-#include <qmakeprojectmanager/qmakenodes.h>
-#include <qmakeprojectmanager/qmakeproject.h>
-#include <qmakeprojectmanager/qmakeprojectmanagerconstants.h>
-#include <qmakeprojectmanager/qmakebuildconfiguration.h>
+
#include <qtsupport/customexecutablerunconfiguration.h>
#include <qtsupport/qtkitinformation.h>
#include <qtsupport/qtsupportconstants.h>
@@ -66,21 +67,26 @@ namespace {
const QLatin1String AndroidDirName("android");
const QLatin1String AndroidManifestName("AndroidManifest.xml");
const QLatin1String AndroidLibsFileName("/res/values/libs.xml");
- const QLatin1String AndroidStringsFileName("/res/values/strings.xml");
const QLatin1String AndroidDefaultPropertiesName("project.properties");
+ const QLatin1String AndroidDeviceSn("AndroidDeviceSerialNumber");
+
} // anonymous namespace
namespace Android {
-namespace Internal {
-bool AndroidManager::supportsAndroid(ProjectExplorer::Target *target)
+using namespace Internal;
+
+bool AndroidManager::supportsAndroid(const ProjectExplorer::Kit *kit)
{
- if (!qobject_cast<QmakeProjectManager::QmakeProject *>(target->project()))
- return false;
- QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(target->kit());
+ QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit);
return version && version->platformName() == QLatin1String(QtSupport::Constants::ANDROID_PLATFORM);
}
+bool AndroidManager::supportsAndroid(const ProjectExplorer::Target *target)
+{
+ return supportsAndroid(target->kit());
+}
+
QString AndroidManager::packageName(ProjectExplorer::Target *target)
{
QDomDocument doc;
@@ -124,23 +130,28 @@ int AndroidManager::minimumSDK(ProjectExplorer::Target *target)
QString AndroidManager::buildTargetSDK(ProjectExplorer::Target *target)
{
- if (!target->activeDeployConfiguration())
- return QLatin1String("android-9");
- AndroidDeployQtStep *step = AndroidGlobal::buildStep<AndroidDeployQtStep>(target->activeDeployConfiguration());
- if (step)
- return step->buildTargetSdk();
- return QLatin1String("android-9");
+ AndroidBuildApkStep *androidBuildApkStep
+ = AndroidGlobal::buildStep<AndroidBuildApkStep>(target->activeBuildConfiguration());
+ if (androidBuildApkStep)
+ return androidBuildApkStep->buildTargetSdk();
+
+ QString fallback = AndroidConfig::apiLevelNameFor(AndroidConfigurations::currentConfig().highestAndroidSdk());
+ return fallback;
+}
+
+bool AndroidManager::signPackage(ProjectExplorer::Target *target)
+{
+ AndroidBuildApkStep *androidBuildApkStep
+ = AndroidGlobal::buildStep<AndroidBuildApkStep>(target->activeBuildConfiguration());
+ if (androidBuildApkStep)
+ return androidBuildApkStep->signPackage();
+ return false;
}
QString AndroidManager::targetArch(ProjectExplorer::Target *target)
{
- QmakeProjectManager::QmakeProject *pro = qobject_cast<QmakeProjectManager::QmakeProject *>(target->project());
- if (!pro)
- return QString();
- QmakeProjectManager::QmakeProFileNode *node = pro->rootQmakeProjectNode();
- if (!node)
- return QString();
- return node->singleVariableValue(QmakeProjectManager::AndroidArchVar);
+ AndroidQtVersion *qt = static_cast<AndroidQtVersion *>(QtSupport::QtKitInformation::qtVersion(target->kit()));
+ return qt->targetArch();
}
Utils::FileName AndroidManager::dirPath(ProjectExplorer::Target *target)
@@ -163,60 +174,23 @@ Utils::FileName AndroidManager::defaultPropertiesPath(ProjectExplorer::Target *t
return dirPath(target).appendPath(AndroidDefaultPropertiesName);
}
-Utils::FileName AndroidManager::apkPath(ProjectExplorer::Target *target, BuildType buildType)
-{
- QString packageName = QLatin1String("QtApp");
- QString buildTypeName;
- if (buildType == DebugBuild)
- buildTypeName = QLatin1String("debug");
- else if (buildType == ReleaseBuildUnsigned)
- buildTypeName =QLatin1String("release-unsigned");
- else
- buildTypeName = QLatin1String("release");
-
- return dirPath(target)
- .appendPath(QLatin1String("bin"))
- .appendPath(QString::fromLatin1("%1-%2.apk")
- .arg(packageName)
- .arg(buildTypeName));
-}
-
-QStringList AndroidManager::availableTargetApplications(ProjectExplorer::Target *target)
-{
- QStringList apps;
- QmakeProjectManager::QmakeProject *qmakeProject = qobject_cast<QmakeProjectManager::QmakeProject *>(target->project());
- if (!qmakeProject)
- return apps;
- foreach (QmakeProjectManager::QmakeProFileNode *proFile, qmakeProject->applicationProFiles()) {
- if (proFile->projectType() == QmakeProjectManager::ApplicationTemplate) {
- if (proFile->targetInformation().target.startsWith(QLatin1String("lib"))
- && proFile->targetInformation().target.endsWith(QLatin1String(".so")))
- apps << proFile->targetInformation().target.mid(3, proFile->targetInformation().target.lastIndexOf(QLatin1Char('.')) - 3);
- else
- apps << proFile->targetInformation().target;
- }
- }
- apps.sort();
- return apps;
-}
-
bool AndroidManager::bundleQt(ProjectExplorer::Target *target)
{
- AndroidDeployQtStep *androidDeployQtStep
- = AndroidGlobal::buildStep<AndroidDeployQtStep>(target->activeDeployConfiguration());
- if (androidDeployQtStep)
- return androidDeployQtStep->deployAction() == AndroidDeployQtStep::BundleLibrariesDeployment;
+ AndroidBuildApkStep *androidBuildApkStep
+ = AndroidGlobal::buildStep<AndroidBuildApkStep>(target->activeBuildConfiguration());
+ if (androidBuildApkStep)
+ return androidBuildApkStep->deployAction() == AndroidBuildApkStep::BundleLibrariesDeployment;
return false;
}
bool AndroidManager::useLocalLibs(ProjectExplorer::Target *target)
{
- AndroidDeployQtStep *androidDeployQtStep
- = AndroidGlobal::buildStep<AndroidDeployQtStep>(target->activeDeployConfiguration());
- if (androidDeployQtStep) {
- return androidDeployQtStep->deployAction() == AndroidDeployQtStep::DebugDeployment
- || androidDeployQtStep->deployAction() == AndroidDeployQtStep::BundleLibrariesDeployment;
+ AndroidBuildApkStep *androidBuildApkStep
+ = AndroidGlobal::buildStep<AndroidBuildApkStep>(target->activeBuildConfiguration());
+ if (androidBuildApkStep) {
+ return androidBuildApkStep->deployAction() == AndroidBuildApkStep::DebugDeployment
+ || androidBuildApkStep->deployAction() == AndroidBuildApkStep::BundleLibrariesDeployment;
}
return false;
@@ -224,11 +198,12 @@ bool AndroidManager::useLocalLibs(ProjectExplorer::Target *target)
QString AndroidManager::deviceSerialNumber(ProjectExplorer::Target *target)
{
- AndroidDeployQtStep *androidDeployQtStep
- = AndroidGlobal::buildStep<AndroidDeployQtStep>(target->activeDeployConfiguration());
- if (androidDeployQtStep)
- return androidDeployQtStep->deviceSerialNumber();
- return QString();
+ return target->namedSettings(AndroidDeviceSn).toString();
+}
+
+void AndroidManager::setDeviceSerialNumber(ProjectExplorer::Target *target, const QString &deviceSerialNumber)
+{
+ target->setNamedSettings(AndroidDeviceSn, deviceSerialNumber);
}
Utils::FileName AndroidManager::localLibsRulesFilePath(ProjectExplorer::Target *target)
@@ -688,5 +663,4 @@ AndroidQtSupport *AndroidManager::androidQtSupport(ProjectExplorer::Target *targ
return 0;
}
-} // namespace Internal
} // namespace Android