diff --git a/src/plugins/android/androiddebugsupport.cpp b/src/plugins/android/androiddebugsupport.cpp index d4911d4f160e9815af6060f940908a53433eea7e..a8d87a5ec3f30f501f33c7a3ba5df87243db7884 100644 --- a/src/plugins/android/androiddebugsupport.cpp +++ b/src/plugins/android/androiddebugsupport.cpp @@ -81,6 +81,14 @@ static QStringList qtSoPaths(QtSupport::BaseQtVersion *qtVersion) return paths.toList(); } +static QStringList uniquePaths(const QStringList &files) +{ + QSet<QString> paths; + foreach (const QString &file, files) + paths<<QFileInfo(file).absolutePath(); + return paths.toList(); +} + RunControl *AndroidDebugSupport::createDebugRunControl(AndroidRunConfiguration *runConfig, QString *errorMessage) { Target *target = runConfig->target(); @@ -99,6 +107,7 @@ RunControl *AndroidDebugSupport::createDebugRunControl(AndroidRunConfiguration * params.solibSearchPath = AndroidManager::androidQtSupport(target)->soLibSearchPath(target); QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(kit); params.solibSearchPath.append(qtSoPaths(version)); + params.solibSearchPath.append(uniquePaths(AndroidManager::androidQtSupport(target)->androidExtraLibs(target))); } if (aspect->useQmlDebugger()) { QTcpServer server; diff --git a/src/plugins/android/androidqtsupport.h b/src/plugins/android/androidqtsupport.h index b6e2867f5a5c3ec1f2223a5645082d2ce4d09dd4..f6aaca184dec14c5db928a389f261f163f4f59dd 100644 --- a/src/plugins/android/androidqtsupport.h +++ b/src/plugins/android/androidqtsupport.h @@ -61,6 +61,7 @@ public: 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(ProjectExplorer::Target *target) const; virtual Utils::FileName androiddeployqtPath(ProjectExplorer::Target *target) const = 0; diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp index 23b190c2c1a3307a119dcb6592dd0787b7103b2d..32bdd7aecc8117ec98d9ddc9f156192a24224e97 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.cpp @@ -72,6 +72,17 @@ QStringList QmakeAndroidSupport::soLibSearchPath(const ProjectExplorer::Target * return res; } +QStringList QmakeAndroidSupport::androidExtraLibs(const ProjectExplorer::Target *target) const +{ + ProjectExplorer::RunConfiguration *rc = target->activeRunConfiguration(); + QmakeAndroidRunConfiguration *qarc = qobject_cast<QmakeAndroidRunConfiguration *>(rc); + if (!qarc) + return QStringList(); + auto project = static_cast<QmakeProject *>(target->project()); + QmakeProFileNode *node = project->rootQmakeProjectNode()->findProFileFor(qarc->proFilePath()); + return node->variableValue(QmakeProjectManager::AndroidExtraLibs); +} + QStringList QmakeAndroidSupport::projectTargetApplications(const ProjectExplorer::Target *target) const { QStringList apps; diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h index 5c19c9498cbf331e9bc54b2869cc182bfd943f61..df0adc9e5b9e75e084741d9074d802359c78fc03 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h +++ b/src/plugins/qmakeandroidsupport/qmakeandroidsupport.h @@ -43,6 +43,7 @@ class QmakeAndroidSupport : public Android::AndroidQtSupport public: bool canHandle(const ProjectExplorer::Target *target) const; QStringList soLibSearchPath(const ProjectExplorer::Target *target) const; + QStringList androidExtraLibs(const ProjectExplorer::Target *target) const override; QStringList projectTargetApplications(const ProjectExplorer::Target *target) const; Utils::FileName androiddeployqtPath(ProjectExplorer::Target *target) const; Utils::FileName androiddeployJsonPath(ProjectExplorer::Target *target) const;