Add debugging method for Android >= 11

Fixed #5346 <https://github.com/Genymobile/scrcpy/issues/5346>
PR #5466 <https://github.com/Genymobile/scrcpy/pull/5466>

Signed-off-by: Romain Vimont <rom@rom1v.com>
This commit is contained in:
Enno Boland 2024-11-10 19:17:45 +01:00 committed by Romain Vimont
parent 16710f36b2
commit faa89c3b82
2 changed files with 30 additions and 10 deletions

View File

@ -213,10 +213,15 @@ execute_server(struct sc_server *server,
// Android < 9 // Android < 9
dbg = "-agentlib:jdwp=transport=dt_socket,suspend=y,server=y,address=" dbg = "-agentlib:jdwp=transport=dt_socket,suspend=y,server=y,address="
SERVER_DEBUGGER_PORT; SERVER_DEBUGGER_PORT;
} else { } else if (sdk_version < 30) {
// Android >= 9 // Android >= 9 && Android < 11
dbg = "-XjdwpProvider:internal -XjdwpOptions:transport=dt_socket," dbg = "-XjdwpProvider:internal -XjdwpOptions:transport=dt_socket,"
"suspend=y,server=y,address=" SERVER_DEBUGGER_PORT; "suspend=y,server=y,address=" SERVER_DEBUGGER_PORT;
} else {
// Android >= 11
// Contrary to the other methods, this does not suspend on start.
// <https://github.com/Genymobile/scrcpy/pull/5466>
dbg = "-XjdwpProvider:adbconnection";
} }
cmd[count++] = dbg; cmd[count++] = dbg;
#endif #endif
@ -408,10 +413,13 @@ execute_server(struct sc_server *server,
cmd[count++] = NULL; cmd[count++] = NULL;
#ifdef SERVER_DEBUGGER #ifdef SERVER_DEBUGGER
LOGI("Server debugger waiting for a client on device port " LOGI("Server debugger listening on port " SERVER_DEBUGGER_PORT "...");
SERVER_DEBUGGER_PORT "..."); // For Android < 11, from the computer:
// From the computer, run // - run `adb forward tcp:5005 tcp:5005`
// adb forward tcp:5005 tcp:5005 // For Android >= 11:
// - execute `adb jdwp` to get the jdwp port
// - run `adb forward tcp:5005 jdwp:XXXX` (replace XXXX)
//
// Then, from Android Studio: Run > Debug > Edit configurations... // Then, from Android Studio: Run > Debug > Edit configurations...
// On the left, click on '+', "Remote", with: // On the left, click on '+', "Remote", with:
// Host: localhost // Host: localhost

View File

@ -461,17 +461,29 @@ meson setup x -Dserver_debugger=true
meson configure x -Dserver_debugger=true meson configure x -Dserver_debugger=true
``` ```
Then recompile. Then recompile, and run scrcpy.
When you start scrcpy, it will start a debugger on port 5005 on the device. For Android < 11, it will start a debugger on port 5005 on the device and wait:
Redirect that port to the computer: Redirect that port to the computer:
```bash ```bash
adb forward tcp:5005 tcp:5005 adb forward tcp:5005 tcp:5005
``` ```
In Android Studio, _Run_ > _Debug_ > _Edit configurations..._ On the left, click on For Android >= 11, first find the listening port:
`+`, _Remote_, and fill the form:
```bash
adb jdwp
```
Then redirect that port:
```bash
adb forward tcp:5005 jdwp:XXXX # replace XXXX
```
In Android Studio, _Run_ > _Debug_ > _Edit configurations..._ On the left, click
on `+`, _Remote_, and fill the form:
- Host: `localhost` - Host: `localhost`
- Port: `5005` - Port: `5005`