From d9bcf78270b51ee8ca2355c603519fc18c52515d Mon Sep 17 00:00:00 2001 From: Vikas Pachdha Date: Thu, 5 Jul 2018 08:13:08 +0200 Subject: [PATCH] Android: Use ipv4 host to connect to app in android IPv6 enabled systems can have IPv4 and an IPv6 entry for localhost and macos seems to prefer IPv6 for localhost and IPv6 is not supported by adbd Task-number: QTCREATORBUG-20730 Change-Id: Ia0823fa04581afc6297e5e8d57a8034ba1b5749c Reviewed-by: hjk Reviewed-by: Ulf Hermann --- src/plugins/android/androiddebugsupport.cpp | 6 +++++- src/plugins/android/androidrunner.cpp | 2 ++ src/plugins/android/androidrunnerworker.cpp | 3 +-- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/plugins/android/androiddebugsupport.cpp b/src/plugins/android/androiddebugsupport.cpp index 11fabdccfdb..84ed1bf52db 100644 --- a/src/plugins/android/androiddebugsupport.cpp +++ b/src/plugins/android/androiddebugsupport.cpp @@ -44,6 +44,7 @@ #include #include +#include using namespace Debugger; using namespace ProjectExplorer; @@ -131,7 +132,10 @@ void AndroidDebugSupport::start() + "/app_process"); setSkipExecutableValidation(true); setUseExtendedRemote(true); - setRemoteChannel(":" + m_runner->gdbServerPort().toString()); + QUrl gdbServer; + gdbServer.setHost(QHostAddress(QHostAddress::LocalHost).toString()); + gdbServer.setPort(m_runner->gdbServerPort().number()); + setRemoteChannel(gdbServer); setSysRoot(AndroidConfigurations::currentConfig().ndkLocation().appendPath("platforms") .appendPath(QString("android-%1").arg(AndroidManager::minimumSDK(target))) .appendPath(toNdkArch(AndroidManager::targetArch(target))).toString()); diff --git a/src/plugins/android/androidrunner.cpp b/src/plugins/android/androidrunner.cpp index 4ea111aeb3b..06475a3118e 100644 --- a/src/plugins/android/androidrunner.cpp +++ b/src/plugins/android/androidrunner.cpp @@ -34,6 +34,7 @@ #include "androidavdmanager.h" #include "androidrunnerworker.h" +#include #include #include #include @@ -197,6 +198,7 @@ void AndroidRunner::qmlServerPortReady(Port port) // device side. It only happens to work since we redirect // host port n to target port n via adb. QUrl serverUrl; + serverUrl.setHost(QHostAddress(QHostAddress::LocalHost).toString()); serverUrl.setPort(port.number()); serverUrl.setScheme(urlTcpScheme()); emit qmlServerReady(serverUrl); diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp index d4bb5cc899c..39239bf6424 100644 --- a/src/plugins/android/androidrunnerworker.cpp +++ b/src/plugins/android/androidrunnerworker.cpp @@ -166,8 +166,7 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packa QTC_CHECK(m_localGdbServerPort.isValid()); if (m_qmlDebugServices != QmlDebug::NoQmlDebugServices) { QTcpServer server; - QTC_ASSERT(server.listen(QHostAddress::LocalHost) - || server.listen(QHostAddress::LocalHostIPv6), + QTC_ASSERT(server.listen(QHostAddress::LocalHost), qDebug() << tr("No free ports available on host for QML debugging.")); m_qmlServer.setScheme(Utils::urlTcpScheme()); m_qmlServer.setHost(server.serverAddress().toString());