Skip to content

feat: add initial implementation for JDWP debugger#86

Closed
itsaky-adfa wants to merge 39 commits intostagefrom
feature/ADFA-550-debugger
Closed

feat: add initial implementation for JDWP debugger#86
itsaky-adfa wants to merge 39 commits intostagefrom
feature/ADFA-550-debugger

Conversation

@itsaky-adfa
Copy link
Copy Markdown
Contributor

@itsaky-adfa itsaky-adfa commented Apr 15, 2025

Injection

  • Write a Gradle Plugin which hooks into the APK build and adds our own
    oj-libjdwp shared libraries to the jniLibs of the project.

  • If the application does not specify an implementation of android.app.Application in its AndroidManifest.xml file, inject our own implementation of android.app.Application class into the project.

  • If the application already has an implementation of android.app.Application, make our implementation extend the Application class of the target application.

  • Update the manifest to specify our own implementation of android.app.Application.

  • Update the manifest to ensure that android.permission.INTERNET is requested by the target application. This is required for the socket communication.

Working

Our implementation of android.app.Application class :

  • Checks if the target application is running on API >= 28.
  • If not, don't bother to start the debugger agent.
  • Otherwise, start the agent with the options provided by CoGo.

After the agent has been attached, a normal JDWP connection can be initiated between CoGo and the target application.

Requires

@itsaky-adfa itsaky-adfa self-assigned this Apr 15, 2025
@itsaky-adfa itsaky-adfa requested a review from a team April 15, 2025 07:51
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
…e event requests

Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
…events

Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
…m VM

Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
…d-only

Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
… requests

Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
itsaky-adfa added 10 commits May 1, 2025 15:12
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
This is currently limited to values with primitive types only.

Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Information may not be available or patially available when the thread information is fetched at the time of a debugger event. It's better to specify a different
request type so that DAPs can lazily fetch thread information.

Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
Signed-off-by: Akash Yadav <akashyadav@appdevforall.org>
@itsaky-adfa
Copy link
Copy Markdown
Contributor Author

This PR has been split into multiple PRs (see above). Closing.

@itsaky-adfa itsaky-adfa closed this Jun 5, 2025
@hal-eisen-adfa hal-eisen-adfa deleted the feature/ADFA-550-debugger branch September 2, 2025 22:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants