diff options
author | Vikas Pachdha <vikas.pachdha@qt.io> | 2018-03-12 18:03:42 +0100 |
---|---|---|
committer | Vikas Pachdha <vikas.pachdha@qt.io> | 2018-03-13 11:40:52 +0000 |
commit | 1fae424f83282d598ce0e6b1cd3f2767332f0097 (patch) | |
tree | e82249e8fde4c3d98474698828de8441a30d3a92 /src | |
parent | 1d2b476320b8ba579587455bbd34b1ef485711e1 (diff) |
Android: Pull linker from device/emulator
Task-number: QTCREATORBUG-19931
Change-Id: If8f0b5fe767f9e816ac5163142d4fa38e0f6540f
Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/android/androiddeployqtstep.cpp | 52 | ||||
-rw-r--r-- | src/plugins/android/androiddeployqtstep.h | 3 |
2 files changed, 24 insertions, 31 deletions
diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index 9d497ba52a..4207c25ada 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -139,25 +139,34 @@ bool AndroidDeployQtStep::init(QList<const BuildStep *> &earlierSteps) m_avdName = info.avdname; m_serialNumber = info.serialNumber; - m_appProcessBinaries.clear(); - m_libdir = QLatin1String("lib"); + ProjectExplorer::BuildConfiguration *bc = target()->activeBuildConfiguration(); + m_filesToPull.clear(); + QString buildDir = bc->buildDirectory().toString(); + if (!buildDir.endsWith("/")) { + buildDir += "/"; + } + QString linkerName("linker"); + QString libDirName("lib"); if (info.cpuAbi.contains(QLatin1String("arm64-v8a")) || info.cpuAbi.contains(QLatin1String("x86_64"))) { ProjectExplorer::ToolChain *tc = ProjectExplorer::ToolChainKitInformation::toolChain(target()->kit(), ProjectExplorer::Constants::CXX_LANGUAGE_ID); if (tc && tc->targetAbi().wordWidth() == 64) { - m_appProcessBinaries << QLatin1String("/system/bin/app_process64"); - m_libdir += QLatin1String("64"); + m_filesToPull["/system/bin/app_process64"] = buildDir + "app_process"; + libDirName = "lib64"; + linkerName = "linker64"; } else { - m_appProcessBinaries << QLatin1String("/system/bin/app_process32"); + m_filesToPull["/system/bin/app_process32"] = buildDir + "app_process"; } } else { m_appProcessBinaries << QLatin1String("/system/bin/app_process32") << QLatin1String("/system/bin/app_process"); } + m_filesToPull["/system/bin/" + linkerName] = buildDir + linkerName; + m_filesToPull["/system/" + libDirName + "/libc.so"] = buildDir + "libc.so"; + AndroidManager::setDeviceSerialNumber(target(), m_serialNumber); - ProjectExplorer::BuildConfiguration *bc = target()->activeBuildConfiguration(); QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(target()->kit()); if (!version) @@ -213,8 +222,6 @@ bool AndroidDeployQtStep::init(QList<const BuildStep *> &earlierSteps) } m_environment = bc->environment(); - m_buildDirectory = bc->buildDirectory().toString(); - m_adbPath = AndroidConfigurations::currentConfig().adbToolPath().toString(); AndroidAvdManager avdManager; @@ -389,31 +396,18 @@ void AndroidDeployQtStep::run(QFutureInterface<bool> &fi) } emit addOutput(tr("Pulling files necessary for debugging."), OutputFormat::NormalMessage); - - QString localAppProcessFile = QString::fromLatin1("%1/app_process").arg(m_buildDirectory); - QFile::remove(localAppProcessFile); - - foreach (const QString &remoteAppProcessFile, m_appProcessBinaries) { + for (auto itr = m_filesToPull.constBegin(); itr != m_filesToPull.constEnd(); ++itr) { + QFile::remove(itr.value()); runCommand(m_adbPath, AndroidDeviceInfo::adbSelector(m_serialNumber) - << QLatin1String("pull") << remoteAppProcessFile - << localAppProcessFile); - if (QFileInfo::exists(localAppProcessFile)) - break; - } - - if (!QFileInfo::exists(localAppProcessFile)) { - returnValue = Failure; - emit addOutput(tr("Package deploy: Failed to pull \"%1\" to \"%2\".") - .arg(m_appProcessBinaries.join(QLatin1String("\", \""))) - .arg(localAppProcessFile), OutputFormat::ErrorMessage); + << "pull" << itr.key() << itr.value()); + if (!QFileInfo::exists(itr.value())) { + emit addOutput(tr("Package deploy: Failed to pull \"%1\" to \"%2\".") + .arg(itr.key()) + .arg(itr.value()), OutputFormat::ErrorMessage); + } } - runCommand(m_adbPath, - AndroidDeviceInfo::adbSelector(m_serialNumber) << QLatin1String("pull") - << QLatin1String("/system/") + m_libdir + QLatin1String("/libc.so") - << QString::fromLatin1("%1/libc.so").arg(m_buildDirectory)); - reportRunResult(fi, returnValue == NoError); } diff --git a/src/plugins/android/androiddeployqtstep.h b/src/plugins/android/androiddeployqtstep.h index 38ba56e12e..fad99d545a 100644 --- a/src/plugins/android/androiddeployqtstep.h +++ b/src/plugins/android/androiddeployqtstep.h @@ -113,11 +113,10 @@ private: Utils::FileName m_manifestName; QString m_serialNumber; - QString m_buildDirectory; QString m_avdName; QString m_apkPath; + QMap<QString, QString> m_filesToPull; QStringList m_appProcessBinaries; - QString m_libdir; QString m_targetArch; bool m_uninstallPreviousPackage = false; |