summaryrefslogtreecommitdiff
path: root/platform/android
diff options
context:
space:
mode:
authorRobbie Cooper <cooperra@users.noreply.github.com>2019-10-14 03:07:46 -0400
committerRobbie Cooper <cooperra@users.noreply.github.com>2019-10-15 16:47:14 -0400
commitf3fdfefa09eeaecfec763801c655ee10397c06e5 (patch)
treec75f54ff6313e9a22a0a2609d05f18981e10999c /platform/android
parent1fed266bf5452b30376db62495f4985f6975f2c1 (diff)
Detect adb connection type and debug over Wi-Fi if needed
Avoid using adb reverse if deploying with adb tcpip. This still can fail if the user is attempting to debug over usb and has connected their device over BOTH usb and tcpip. I'm not sure how we would detect that problem in advance though.
Diffstat (limited to 'platform/android')
-rw-r--r--platform/android/export/export.cpp13
1 files changed, 10 insertions, 3 deletions
diff --git a/platform/android/export/export.cpp b/platform/android/export/export.cpp
index a43f195b84..1460c336e8 100644
--- a/platform/android/export/export.cpp
+++ b/platform/android/export/export.cpp
@@ -220,6 +220,7 @@ class EditorExportPlatformAndroid : public EditorExportPlatform {
String name;
String description;
int api_level;
+ bool usb;
};
struct APKExportData {
@@ -246,17 +247,20 @@ class EditorExportPlatformAndroid : public EditorExportPlatform {
String devices;
List<String> args;
args.push_back("devices");
+ args.push_back("-l");
int ec;
OS::get_singleton()->execute(adb, args, true, NULL, &devices, &ec);
Vector<String> ds = devices.split("\n");
Vector<String> ldevices;
+ Vector<bool> ldevices_usbconnection;
for (int i = 1; i < ds.size(); i++) {
String d = ds[i];
- int dpos = d.find("device");
+ int dpos = d.find(" device ");
if (dpos == -1)
continue;
+ ldevices_usbconnection.push_back(d.find(" usb:") != -1);
d = d.substr(0, dpos).strip_edges();
ldevices.push_back(d);
}
@@ -287,6 +291,7 @@ class EditorExportPlatformAndroid : public EditorExportPlatform {
Device d;
d.id = ldevices[i];
+ d.usb = ldevices_usbconnection[i];
for (int j = 0; j < ea->devices.size(); j++) {
if (ea->devices[j].id == ldevices[i]) {
d.description = ea->devices[j].description;
@@ -1404,7 +1409,9 @@ public:
}
const bool use_remote = (p_debug_flags & DEBUG_FLAG_REMOTE_DEBUG) || (p_debug_flags & DEBUG_FLAG_DUMB_CLIENT);
- const bool use_reverse = devices[p_device].api_level >= 21;
+ const bool use_reverse = devices[p_device].api_level >= 21 && devices[p_device].usb;
+ // Note: Reverse can still fail if device is connected by both usb and network
+ // Ideally we'd know for sure whether adb reverse would work before we build the APK
if (use_reverse)
p_debug_flags |= DEBUG_FLAG_REMOTE_DEBUG_LOCALHOST;
@@ -1509,7 +1516,7 @@ public:
}
} else {
- static const char *const msg = "--- Device API < 21; debugging over Wi-Fi ---";
+ static const char *const msg = "--- Device API < 21 or no USB connection; debugging over Wi-Fi ---";
EditorNode::get_singleton()->get_log()->add_message(msg, EditorLog::MSG_TYPE_EDITOR);
print_line(String(msg).to_upper());
}