forked from qt-creator/qt-creator
Android: Remove dead code related to local libs
The start point is the if (m_useLocalQtLibs) block in AndroidRunner
constructor which seems to be effectless since 8d27ec6
(Android: Fix
debugging applications that link many modules)
Change-Id: I7850c1f53a003553ae1b3fdf0881f4c9fedf7b15
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
This commit is contained in:
committed by
Martin Kampas
parent
c5c8618aa1
commit
b10b39a6dc
@@ -67,7 +67,6 @@
|
|||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
const QLatin1String AndroidManifestName("AndroidManifest.xml");
|
const QLatin1String AndroidManifestName("AndroidManifest.xml");
|
||||||
const QLatin1String AndroidLibsFileName("/res/values/libs.xml");
|
|
||||||
const QLatin1String AndroidDefaultPropertiesName("project.properties");
|
const QLatin1String AndroidDefaultPropertiesName("project.properties");
|
||||||
const QLatin1String AndroidDeviceSn("AndroidDeviceSerialNumber");
|
const QLatin1String AndroidDeviceSn("AndroidDeviceSerialNumber");
|
||||||
|
|
||||||
@@ -91,17 +90,6 @@ typedef QMap<QString, Library> LibrariesMap;
|
|||||||
|
|
||||||
static bool openXmlFile(QDomDocument &doc, const Utils::FileName &fileName);
|
static bool openXmlFile(QDomDocument &doc, const Utils::FileName &fileName);
|
||||||
static bool openManifest(ProjectExplorer::Target *target, QDomDocument &doc);
|
static bool openManifest(ProjectExplorer::Target *target, QDomDocument &doc);
|
||||||
static QStringList libsXml(ProjectExplorer::Target *target, const QString &tag);
|
|
||||||
|
|
||||||
enum ItemType
|
|
||||||
{
|
|
||||||
Lib,
|
|
||||||
Jar,
|
|
||||||
BundledFile,
|
|
||||||
BundledJar
|
|
||||||
};
|
|
||||||
static QString loadLocal(ProjectExplorer::Target *target, int apiLevel, ItemType item, const QString &attribute=QLatin1String("file"));
|
|
||||||
|
|
||||||
|
|
||||||
bool AndroidManager::supportsAndroid(const ProjectExplorer::Kit *kit)
|
bool AndroidManager::supportsAndroid(const ProjectExplorer::Kit *kit)
|
||||||
{
|
{
|
||||||
@@ -211,11 +199,6 @@ Utils::FileName AndroidManager::manifestPath(ProjectExplorer::Target *target)
|
|||||||
return dirPath(target).appendPath(AndroidManifestName);
|
return dirPath(target).appendPath(AndroidManifestName);
|
||||||
}
|
}
|
||||||
|
|
||||||
Utils::FileName AndroidManager::libsPath(ProjectExplorer::Target *target)
|
|
||||||
{
|
|
||||||
return dirPath(target).appendPath(AndroidLibsFileName);
|
|
||||||
}
|
|
||||||
|
|
||||||
Utils::FileName AndroidManager::defaultPropertiesPath(ProjectExplorer::Target *target)
|
Utils::FileName AndroidManager::defaultPropertiesPath(ProjectExplorer::Target *target)
|
||||||
{
|
{
|
||||||
return dirPath(target).appendPath(AndroidDefaultPropertiesName);
|
return dirPath(target).appendPath(AndroidDefaultPropertiesName);
|
||||||
@@ -231,18 +214,6 @@ bool AndroidManager::bundleQt(ProjectExplorer::Target *target)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AndroidManager::useLocalLibs(ProjectExplorer::Target *target)
|
|
||||||
{
|
|
||||||
AndroidBuildApkStep *androidBuildApkStep
|
|
||||||
= AndroidGlobal::buildStep<AndroidBuildApkStep>(target->activeBuildConfiguration());
|
|
||||||
if (androidBuildApkStep) {
|
|
||||||
return androidBuildApkStep->deployAction() == AndroidBuildApkStep::DebugDeployment
|
|
||||||
|| androidBuildApkStep->deployAction() == AndroidBuildApkStep::BundleLibrariesDeployment;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString AndroidManager::deviceSerialNumber(ProjectExplorer::Target *target)
|
QString AndroidManager::deviceSerialNumber(ProjectExplorer::Target *target)
|
||||||
{
|
{
|
||||||
return target->namedSettings(AndroidDeviceSn).toString();
|
return target->namedSettings(AndroidDeviceSn).toString();
|
||||||
@@ -253,31 +224,6 @@ void AndroidManager::setDeviceSerialNumber(ProjectExplorer::Target *target, cons
|
|||||||
target->setNamedSettings(AndroidDeviceSn, deviceSerialNumber);
|
target->setNamedSettings(AndroidDeviceSn, deviceSerialNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
Utils::FileName AndroidManager::localLibsRulesFilePath(ProjectExplorer::Target *target)
|
|
||||||
{
|
|
||||||
QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(target->kit());
|
|
||||||
if (!version)
|
|
||||||
return Utils::FileName();
|
|
||||||
return Utils::FileName::fromString(version->qmakeProperty("QT_INSTALL_LIBS"));
|
|
||||||
}
|
|
||||||
|
|
||||||
QString AndroidManager::loadLocalLibs(ProjectExplorer::Target *target, int apiLevel)
|
|
||||||
{
|
|
||||||
return loadLocal(target, apiLevel, Lib);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString AndroidManager::loadLocalJars(ProjectExplorer::Target *target, int apiLevel)
|
|
||||||
{
|
|
||||||
ItemType type = bundleQt(target) ? BundledJar : Jar;
|
|
||||||
return loadLocal(target, apiLevel, type);
|
|
||||||
}
|
|
||||||
|
|
||||||
QString AndroidManager::loadLocalJarsInitClasses(ProjectExplorer::Target *target, int apiLevel)
|
|
||||||
{
|
|
||||||
ItemType type = bundleQt(target) ? BundledJar : Jar;
|
|
||||||
return loadLocal(target, apiLevel, type, QLatin1String("initClass"));
|
|
||||||
}
|
|
||||||
|
|
||||||
QPair<int, int> AndroidManager::apiLevelRange()
|
QPair<int, int> AndroidManager::apiLevelRange()
|
||||||
{
|
{
|
||||||
return qMakePair(9, 23);
|
return qMakePair(9, 23);
|
||||||
@@ -331,125 +277,11 @@ QString AndroidManager::androidNameForApiLevel(int x)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList AndroidManager::qtLibs(ProjectExplorer::Target *target)
|
|
||||||
{
|
|
||||||
return libsXml(target, QLatin1String("qt_libs"));
|
|
||||||
}
|
|
||||||
|
|
||||||
QStringList AndroidManager::prebundledLibs(ProjectExplorer::Target *target)
|
|
||||||
{
|
|
||||||
return libsXml(target, QLatin1String("bundled_libs"));
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool openLibsXml(ProjectExplorer::Target *target, QDomDocument &doc)
|
|
||||||
{
|
|
||||||
return openXmlFile(doc, AndroidManager::libsPath(target));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void raiseError(const QString &reason)
|
static void raiseError(const QString &reason)
|
||||||
{
|
{
|
||||||
QMessageBox::critical(0, AndroidManager::tr("Error creating Android templates."), reason);
|
QMessageBox::critical(0, AndroidManager::tr("Error creating Android templates."), reason);
|
||||||
}
|
}
|
||||||
|
|
||||||
static QString loadLocal(ProjectExplorer::Target *target, int apiLevel, ItemType item, const QString &attribute)
|
|
||||||
{
|
|
||||||
QString itemType;
|
|
||||||
if (item == Lib)
|
|
||||||
itemType = QLatin1String("lib");
|
|
||||||
else if (item == BundledFile)
|
|
||||||
itemType = QLatin1String("bundled");
|
|
||||||
else // Jar or BundledJar
|
|
||||||
itemType = QLatin1String("jar");
|
|
||||||
|
|
||||||
QString localLibs;
|
|
||||||
|
|
||||||
QDir rulesFilesDir(AndroidManager::localLibsRulesFilePath(target).toString());
|
|
||||||
if (!rulesFilesDir.exists())
|
|
||||||
return localLibs;
|
|
||||||
|
|
||||||
QStringList libs;
|
|
||||||
libs << AndroidManager::qtLibs(target) << AndroidManager::prebundledLibs(target);
|
|
||||||
|
|
||||||
QFileInfoList rulesFiles = rulesFilesDir.entryInfoList(QStringList() << QLatin1String("*.xml"),
|
|
||||||
QDir::Files | QDir::Readable);
|
|
||||||
|
|
||||||
QStringList dependencyLibs;
|
|
||||||
QStringList replacedLibs;
|
|
||||||
foreach (QFileInfo rulesFile, rulesFiles) {
|
|
||||||
if (rulesFile.baseName() != QLatin1String("rules")
|
|
||||||
&& !rulesFile.baseName().endsWith(QLatin1String("-android-dependencies"))) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
QDomDocument doc;
|
|
||||||
if (!openXmlFile(doc, Utils::FileName::fromString(rulesFile.absoluteFilePath())))
|
|
||||||
return localLibs;
|
|
||||||
|
|
||||||
QDomElement element = doc.documentElement().firstChildElement(QLatin1String("platforms")).firstChildElement(itemType + QLatin1Char('s')).firstChildElement(QLatin1String("version"));
|
|
||||||
while (!element.isNull()) {
|
|
||||||
if (element.attribute(QLatin1String("value")).toInt() == apiLevel) {
|
|
||||||
if (element.hasAttribute(QLatin1String("symlink")))
|
|
||||||
apiLevel = element.attribute(QLatin1String("symlink")).toInt();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
element = element.nextSiblingElement(QLatin1String("version"));
|
|
||||||
}
|
|
||||||
|
|
||||||
element = doc.documentElement().firstChildElement(QLatin1String("dependencies")).firstChildElement(QLatin1String("lib"));
|
|
||||||
while (!element.isNull()) {
|
|
||||||
if (libs.contains(element.attribute(QLatin1String("name")))) {
|
|
||||||
QDomElement libElement = element.firstChildElement(QLatin1String("depends")).firstChildElement(itemType);
|
|
||||||
while (!libElement.isNull()) {
|
|
||||||
if (libElement.attribute(QLatin1String("bundling")).toInt() == (item == BundledJar ? 1 : 0)) {
|
|
||||||
if (libElement.hasAttribute(attribute)) {
|
|
||||||
QString dependencyLib = libElement.attribute(attribute);
|
|
||||||
if (dependencyLib.contains(QLatin1String("%1")))
|
|
||||||
dependencyLib = dependencyLib.arg(apiLevel);
|
|
||||||
if (libElement.hasAttribute(QLatin1String("extends"))) {
|
|
||||||
const QString extends = libElement.attribute(QLatin1String("extends"));
|
|
||||||
if (libs.contains(extends))
|
|
||||||
dependencyLibs << dependencyLib;
|
|
||||||
} else if (!dependencyLibs.contains(dependencyLib)) {
|
|
||||||
dependencyLibs << dependencyLib;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (libElement.hasAttribute(QLatin1String("replaces"))) {
|
|
||||||
QString replacedLib = libElement.attribute(QLatin1String("replaces"));
|
|
||||||
if (replacedLib.contains(QLatin1String("%1")))
|
|
||||||
replacedLib = replacedLib.arg(apiLevel);
|
|
||||||
if (!replacedLibs.contains(replacedLib))
|
|
||||||
replacedLibs << replacedLib;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
libElement = libElement.nextSiblingElement(itemType);
|
|
||||||
}
|
|
||||||
|
|
||||||
libElement = element.firstChildElement(QLatin1String("replaces")).firstChildElement(itemType);
|
|
||||||
while (!libElement.isNull()) {
|
|
||||||
if (libElement.hasAttribute(attribute)) {
|
|
||||||
QString replacedLib = libElement.attribute(attribute).arg(apiLevel);
|
|
||||||
if (!replacedLibs.contains(replacedLib))
|
|
||||||
replacedLibs << replacedLib;
|
|
||||||
}
|
|
||||||
|
|
||||||
libElement = libElement.nextSiblingElement(itemType);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
element = element.nextSiblingElement(QLatin1String("lib"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// The next loop requires all library names to end with a ":" so we append one
|
|
||||||
// to the end after joining.
|
|
||||||
localLibs = dependencyLibs.join(QLatin1Char(':')) + QLatin1Char(':');
|
|
||||||
foreach (QString replacedLib, replacedLibs)
|
|
||||||
localLibs.remove(replacedLib + QLatin1Char(':'));
|
|
||||||
|
|
||||||
return localLibs;
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool openXmlFile(QDomDocument &doc, const Utils::FileName &fileName)
|
static bool openXmlFile(QDomDocument &doc, const Utils::FileName &fileName)
|
||||||
{
|
{
|
||||||
QFile f(fileName.toString());
|
QFile f(fileName.toString());
|
||||||
@@ -468,27 +300,6 @@ static bool openManifest(ProjectExplorer::Target *target, QDomDocument &doc)
|
|||||||
return openXmlFile(doc, AndroidManager::manifestPath(target));
|
return openXmlFile(doc, AndroidManager::manifestPath(target));
|
||||||
}
|
}
|
||||||
|
|
||||||
static QStringList libsXml(ProjectExplorer::Target *target, const QString &tag)
|
|
||||||
{
|
|
||||||
QStringList libs;
|
|
||||||
QDomDocument doc;
|
|
||||||
if (!openLibsXml(target, doc))
|
|
||||||
return libs;
|
|
||||||
QDomElement arrayElem = doc.documentElement().firstChildElement(QLatin1String("array"));
|
|
||||||
while (!arrayElem.isNull()) {
|
|
||||||
if (arrayElem.attribute(QLatin1String("name")) == tag) {
|
|
||||||
arrayElem = arrayElem.firstChildElement(QLatin1String("item"));
|
|
||||||
while (!arrayElem.isNull()) {
|
|
||||||
libs << arrayElem.text();
|
|
||||||
arrayElem = arrayElem.nextSiblingElement(QLatin1String("item"));
|
|
||||||
}
|
|
||||||
return libs;
|
|
||||||
}
|
|
||||||
arrayElem = arrayElem.nextSiblingElement(QLatin1String("array"));
|
|
||||||
}
|
|
||||||
return libs;
|
|
||||||
}
|
|
||||||
|
|
||||||
void AndroidManager::cleanLibsOnDevice(ProjectExplorer::Target *target)
|
void AndroidManager::cleanLibsOnDevice(ProjectExplorer::Target *target)
|
||||||
{
|
{
|
||||||
const QString targetArch = AndroidManager::targetArch(target);
|
const QString targetArch = AndroidManager::targetArch(target);
|
||||||
|
@@ -64,7 +64,6 @@ public:
|
|||||||
static QString activityName(ProjectExplorer::Target *target);
|
static QString activityName(ProjectExplorer::Target *target);
|
||||||
|
|
||||||
static bool bundleQt(ProjectExplorer::Target *target);
|
static bool bundleQt(ProjectExplorer::Target *target);
|
||||||
static bool useLocalLibs(ProjectExplorer::Target *target);
|
|
||||||
static QString deviceSerialNumber(ProjectExplorer::Target *target);
|
static QString deviceSerialNumber(ProjectExplorer::Target *target);
|
||||||
static void setDeviceSerialNumber(ProjectExplorer::Target *target, const QString &deviceSerialNumber);
|
static void setDeviceSerialNumber(ProjectExplorer::Target *target, const QString &deviceSerialNumber);
|
||||||
|
|
||||||
@@ -79,20 +78,11 @@ public:
|
|||||||
static Utils::FileName dirPath(ProjectExplorer::Target *target);
|
static Utils::FileName dirPath(ProjectExplorer::Target *target);
|
||||||
static Utils::FileName manifestPath(ProjectExplorer::Target *target);
|
static Utils::FileName manifestPath(ProjectExplorer::Target *target);
|
||||||
static Utils::FileName manifestSourcePath(ProjectExplorer::Target *target);
|
static Utils::FileName manifestSourcePath(ProjectExplorer::Target *target);
|
||||||
static Utils::FileName libsPath(ProjectExplorer::Target *target);
|
|
||||||
static Utils::FileName defaultPropertiesPath(ProjectExplorer::Target *target);
|
static Utils::FileName defaultPropertiesPath(ProjectExplorer::Target *target);
|
||||||
|
|
||||||
static Utils::FileName localLibsRulesFilePath(ProjectExplorer::Target *target);
|
|
||||||
static QString loadLocalLibs(ProjectExplorer::Target *target, int apiLevel = -1);
|
|
||||||
static QString loadLocalJars(ProjectExplorer::Target *target, int apiLevel = -1);
|
|
||||||
static QString loadLocalJarsInitClasses(ProjectExplorer::Target *target, int apiLevel = -1);
|
|
||||||
|
|
||||||
static QPair<int, int> apiLevelRange();
|
static QPair<int, int> apiLevelRange();
|
||||||
static QString androidNameForApiLevel(int x);
|
static QString androidNameForApiLevel(int x);
|
||||||
|
|
||||||
static QStringList qtLibs(ProjectExplorer::Target *target);
|
|
||||||
static QStringList prebundledLibs(ProjectExplorer::Target *target);
|
|
||||||
|
|
||||||
static void cleanLibsOnDevice(ProjectExplorer::Target *target);
|
static void cleanLibsOnDevice(ProjectExplorer::Target *target);
|
||||||
static void installQASIPackage(ProjectExplorer::Target *target, const QString &packagePath);
|
static void installQASIPackage(ProjectExplorer::Target *target, const QString &packagePath);
|
||||||
|
|
||||||
|
@@ -154,13 +154,6 @@ AndroidRunner::AndroidRunner(QObject *parent,
|
|||||||
m_qmlPort = 0;
|
m_qmlPort = 0;
|
||||||
}
|
}
|
||||||
ProjectExplorer::Target *target = runConfig->target();
|
ProjectExplorer::Target *target = runConfig->target();
|
||||||
m_useLocalQtLibs = AndroidManager::useLocalLibs(target);
|
|
||||||
if (m_useLocalQtLibs) {
|
|
||||||
int deviceApiLevel = AndroidManager::minimumSDK(target);
|
|
||||||
m_localLibs = AndroidManager::loadLocalLibs(target, deviceApiLevel);
|
|
||||||
m_localJars = AndroidManager::loadLocalJars(target, deviceApiLevel);
|
|
||||||
m_localJarsInitClasses = AndroidManager::loadLocalJarsInitClasses(target, deviceApiLevel);
|
|
||||||
}
|
|
||||||
m_intentName = AndroidManager::intentName(target);
|
m_intentName = AndroidManager::intentName(target);
|
||||||
m_packageName = m_intentName.left(m_intentName.indexOf(QLatin1Char('/')));
|
m_packageName = m_intentName.left(m_intentName.indexOf(QLatin1Char('/')));
|
||||||
|
|
||||||
|
@@ -108,14 +108,10 @@ private:
|
|||||||
QmlDebug::QmlDebugServicesPreset m_qmlDebugServices;
|
QmlDebug::QmlDebugServicesPreset m_qmlDebugServices;
|
||||||
ushort m_localGdbServerPort; // Local end of forwarded debug socket.
|
ushort m_localGdbServerPort; // Local end of forwarded debug socket.
|
||||||
quint16 m_qmlPort;
|
quint16 m_qmlPort;
|
||||||
bool m_useLocalQtLibs;
|
|
||||||
QString m_pingFile;
|
QString m_pingFile;
|
||||||
QString m_pongFile;
|
QString m_pongFile;
|
||||||
QString m_gdbserverPath;
|
QString m_gdbserverPath;
|
||||||
QString m_gdbserverSocket;
|
QString m_gdbserverSocket;
|
||||||
QString m_localLibs;
|
|
||||||
QString m_localJars;
|
|
||||||
QString m_localJarsInitClasses;
|
|
||||||
QString m_adb;
|
QString m_adb;
|
||||||
bool m_isBusyBox;
|
bool m_isBusyBox;
|
||||||
QStringList m_selector;
|
QStringList m_selector;
|
||||||
|
Reference in New Issue
Block a user