Send static_init_classes paratemer to Android application

Change-Id: I3eba3413464bd0e503f24817769bd3062be0eeb2
Reviewed-by: Daniel Teske <daniel.teske@digia.com>
This commit is contained in:
BogDan Vatra
2013-01-06 16:23:08 +02:00
committed by Daniel Teske
parent 2112e1e5dc
commit 674ec5efa9
4 changed files with 16 additions and 4 deletions

View File

@@ -570,6 +570,11 @@ QString AndroidManager::loadLocalJars(ProjectExplorer::Target *target, int apiLe
return loadLocal(target, apiLevel, Jar); return loadLocal(target, apiLevel, Jar);
} }
QString AndroidManager::loadLocalJarsInitClasses(ProjectExplorer::Target *target, int apiLevel)
{
return loadLocal(target, apiLevel, Jar, QLatin1String("initClass"));
}
QStringList AndroidManager::availableQtLibs(ProjectExplorer::Target *target) QStringList AndroidManager::availableQtLibs(ProjectExplorer::Target *target)
{ {
QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(target->kit()); QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(target->kit());
@@ -686,7 +691,7 @@ void AndroidManager::raiseError(const QString &reason)
QMessageBox::critical(0, tr("Error creating Android templates"), reason); QMessageBox::critical(0, tr("Error creating Android templates"), reason);
} }
QString AndroidManager::loadLocal(ProjectExplorer::Target *target, int apiLevel, ItemType item) QString AndroidManager::loadLocal(ProjectExplorer::Target *target, int apiLevel, ItemType item, const QString &attribute)
{ {
QString itemType; QString itemType;
if (item == Lib) if (item == Lib)
@@ -717,13 +722,15 @@ QString AndroidManager::loadLocal(ProjectExplorer::Target *target, int apiLevel,
if (libs.contains(element.attribute(QLatin1String("name")))) { if (libs.contains(element.attribute(QLatin1String("name")))) {
QDomElement libElement = element.firstChildElement(QLatin1String("depends")).firstChildElement(itemType); QDomElement libElement = element.firstChildElement(QLatin1String("depends")).firstChildElement(itemType);
while (!libElement.isNull()) { while (!libElement.isNull()) {
localLibs += libElement.attribute(QLatin1String("file")).arg(apiLevel) + QLatin1Char(':'); if (libElement.hasAttribute(attribute))
localLibs += libElement.attribute(attribute).arg(apiLevel) + QLatin1Char(':');
libElement = libElement.nextSiblingElement(itemType); libElement = libElement.nextSiblingElement(itemType);
} }
libElement = element.firstChildElement(QLatin1String("replaces")).firstChildElement(itemType); libElement = element.firstChildElement(QLatin1String("replaces")).firstChildElement(itemType);
while (!libElement.isNull()) { while (!libElement.isNull()) {
localLibs.replace(libElement.attribute(QLatin1String("file")).arg(apiLevel) + QLatin1Char(':'), QString()); if (libElement.hasAttribute(attribute))
localLibs.replace(libElement.attribute(attribute).arg(apiLevel) + QLatin1Char(':'), QString());
libElement = libElement.nextSiblingElement(itemType); libElement = libElement.nextSiblingElement(itemType);
} }
} }

View File

@@ -102,6 +102,7 @@ public:
static Utils::FileName localLibsRulesFilePath(ProjectExplorer::Target *target); static Utils::FileName localLibsRulesFilePath(ProjectExplorer::Target *target);
static QString loadLocalLibs(ProjectExplorer::Target *target, int apiLevel); static QString loadLocalLibs(ProjectExplorer::Target *target, int apiLevel);
static QString loadLocalJars(ProjectExplorer::Target *target, int apiLevel); static QString loadLocalJars(ProjectExplorer::Target *target, int apiLevel);
static QString loadLocalJarsInitClasses(ProjectExplorer::Target *target, int apiLevel);
static QStringList availableQtLibs(ProjectExplorer::Target *target); static QStringList availableQtLibs(ProjectExplorer::Target *target);
static QStringList qtLibs(ProjectExplorer::Target *target); static QStringList qtLibs(ProjectExplorer::Target *target);
@@ -127,7 +128,7 @@ private:
Lib, Lib,
Jar Jar
}; };
static QString loadLocal(ProjectExplorer::Target *target, int apiLevel, ItemType item); static QString loadLocal(ProjectExplorer::Target *target, int apiLevel, ItemType item, const QString &attribute=QLatin1String("file"));
class Library class Library
{ {

View File

@@ -55,6 +55,7 @@ AndroidRunner::AndroidRunner(QObject *parent, AndroidRunConfiguration *runConfig
if ((m_useLocalQtLibs = ds->useLocalQtLibs())) { if ((m_useLocalQtLibs = ds->useLocalQtLibs())) {
m_localLibs = AndroidManager::loadLocalLibs(target, ds->deviceAPILevel()); m_localLibs = AndroidManager::loadLocalLibs(target, ds->deviceAPILevel());
m_localJars = AndroidManager::loadLocalJars(target, ds->deviceAPILevel()); m_localJars = AndroidManager::loadLocalJars(target, ds->deviceAPILevel());
m_localJarsInitClasses = AndroidManager::loadLocalJarsInitClasses(target, ds->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('/')));
@@ -198,6 +199,8 @@ void AndroidRunner::asyncStart()
extraParams += QLatin1String(" -e libs_prefix /data/local/qt/"); extraParams += QLatin1String(" -e libs_prefix /data/local/qt/");
extraParams += QLatin1String(" -e load_local_libs ") + m_localLibs; extraParams += QLatin1String(" -e load_local_libs ") + m_localLibs;
extraParams += QLatin1String(" -e load_local_jars ") + m_localJars; extraParams += QLatin1String(" -e load_local_jars ") + m_localJars;
if (!m_localJarsInitClasses.isEmpty())
extraParams += QLatin1String(" -e static_init_classes ") + m_localJarsInitClasses;
} }
extraParams = extraParams.trimmed(); extraParams = extraParams.trimmed();

View File

@@ -92,6 +92,7 @@ private:
bool m_useLocalQtLibs; bool m_useLocalQtLibs;
QString m_localLibs; QString m_localLibs;
QString m_localJars; QString m_localJars;
QString m_localJarsInitClasses;
QMutex m_mutex; QMutex m_mutex;
}; };