Android: Move part of start setup into AndroidDebugSupport's c'tor

Task-number: QTCREATORBUG-29168
Change-Id: I948c52e8fbd197591ca19e15b928f6a26642ceac
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Jarek Kobus
2024-11-21 11:07:50 +01:00
parent d4eef82528
commit 7c7e15cbce

View File

@@ -89,24 +89,13 @@ public:
setLldbPlatform("remote-android"); setLldbPlatform("remote-android");
m_runner = new AndroidRunner(runControl); m_runner = new AndroidRunner(runControl);
addStartDependency(m_runner); addStartDependency(m_runner);
}
void start() override; Target *target = runControl->target();
private:
AndroidRunner *m_runner = nullptr;
};
void AndroidDebugSupport::start()
{
Target *target = runControl()->target();
Kit *kit = target->kit(); Kit *kit = target->kit();
setStartMode(AttachToRemoteServer); setStartMode(AttachToRemoteServer);
const QString packageName = Internal::packageName(target); const QString packageName = Internal::packageName(target);
setRunControlName(packageName); setRunControlName(packageName);
setUseContinueInsteadOfRun(true); setUseContinueInsteadOfRun(true);
setAttachPid(m_runner->pid());
QtSupport::QtVersion *qtVersion = QtSupport::QtKitAspect::qtVersion(kit); QtSupport::QtVersion *qtVersion = QtSupport::QtKitAspect::qtVersion(kit);
if (!HostOsInfo::isWindowsHost() if (!HostOsInfo::isWindowsHost()
@@ -117,7 +106,7 @@ void AndroidDebugSupport::start()
if (isCppDebugging()) { if (isCppDebugging()) {
qCDebug(androidDebugSupportLog) << "C++ debugging enabled"; qCDebug(androidDebugSupportLog) << "C++ debugging enabled";
const ProjectNode *node = target->project()->findNodeForBuildKey(runControl()->buildKey()); const ProjectNode *node = target->project()->findNodeForBuildKey(runControl->buildKey());
FilePaths solibSearchPath = getSoLibSearchPath(node); FilePaths solibSearchPath = getSoLibSearchPath(node);
if (qtVersion) if (qtVersion)
solibSearchPath.append(qtVersion->qtSoPaths()); solibSearchPath.append(qtVersion->qtSoPaths());
@@ -142,23 +131,6 @@ void AndroidDebugSupport::start()
QString devicePreferredAbi = apkDevicePreferredAbi(target); QString devicePreferredAbi = apkDevicePreferredAbi(target);
setAbi(androidAbi2Abi(devicePreferredAbi)); setAbi(androidAbi2Abi(devicePreferredAbi));
if (cppEngineType() == LldbEngineType) {
QString deviceSerialNumber = Internal::deviceSerialNumber(target);
const int colonPos = deviceSerialNumber.indexOf(QLatin1Char(':'));
if (colonPos > 0) {
// When wireless debugging is used then the device serial number will include a port number
// The port number must be removed to form a valid hostname
deviceSerialNumber.truncate(colonPos);
}
setRemoteChannel("adb://" + deviceSerialNumber,
m_runner->debugServerPort().number());
} else {
QUrl debugServer;
debugServer.setPort(m_runner->debugServerPort().number());
debugServer.setHost(QHostAddress(QHostAddress::LocalHost).toString());
setRemoteChannel(debugServer);
}
auto qt = static_cast<AndroidQtVersion *>(qtVersion); auto qt = static_cast<AndroidQtVersion *>(qtVersion);
const int minimumNdk = qt ? qt->minimumNDK() : 0; const int minimumNdk = qt ? qt->minimumNDK() : 0;
@@ -178,14 +150,45 @@ void AndroidDebugSupport::start()
if (isQmlDebugging()) { if (isQmlDebugging()) {
qCDebug(androidDebugSupportLog) << "QML debugging enabled. QML server: " qCDebug(androidDebugSupportLog) << "QML debugging enabled. QML server: "
<< qmlChannel().toDisplayString(); << qmlChannel().toDisplayString();
setQmlServer(qmlChannel());
//TODO: Not sure if these are the right paths. //TODO: Not sure if these are the right paths.
if (qtVersion) if (qtVersion)
addSearchDirectory(qtVersion->qmlPath()); addSearchDirectory(qtVersion->qmlPath());
} }
connect(this, &RunWorker::started, this, [this, packageName] {
qCDebug(androidDebugSupportLog) << "Starting debugger - package name: " << packageName qCDebug(androidDebugSupportLog) << "Starting debugger - package name: " << packageName
<< ", PID: " << m_runner->pid().pid(); << ", PID: " << m_runner->pid().pid();
});
}
void start() override;
private:
AndroidRunner *m_runner = nullptr;
};
void AndroidDebugSupport::start()
{
setAttachPid(m_runner->pid());
if (isCppDebugging()) {
if (cppEngineType() == LldbEngineType) {
QString deviceSerialNumber = Internal::deviceSerialNumber(runControl()->target());
const int colonPos = deviceSerialNumber.indexOf(QLatin1Char(':'));
if (colonPos > 0) {
// When wireless debugging is used then the device serial number will include a port number
// The port number must be removed to form a valid hostname
deviceSerialNumber.truncate(colonPos);
}
setRemoteChannel("adb://" + deviceSerialNumber,
m_runner->debugServerPort().number());
} else {
QUrl debugServer;
debugServer.setPort(m_runner->debugServerPort().number());
debugServer.setHost(QHostAddress(QHostAddress::LocalHost).toString());
setRemoteChannel(debugServer);
}
}
if (isQmlDebugging())
setQmlServer(qmlChannel());
DebuggerRunTool::start(); DebuggerRunTool::start();
} }