You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Android库的internal类中设置断点?

问题

协助调试Kotlin编写的Android应用集成Wallet Connect (v2)时,com.walletconnect:android-core库抛出异常,需要设置断点或添加调试打印排查问题,但遇到以下障碍:

  • 库通过Gradle引入:
    implementation("com.walletconnect:android-core:1.3.0")
    implementation("com.walletconnect:sign:2.1.0")
    
  • 错误栈显示异常来自JsonRpcInteractor类的handleError方法(行号271),被包装在java.lang.InternalError中:
    java.lang.InternalError: JsonRpcInteractor: Received unknown object type
        at com.walletconnect.android.impl.json_rpc.domain.JsonRpcInteractor$handleError$1.invokeSuspend(JsonRpcInteractor.kt:271)
        at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
        at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
        at kotlinx.coroutines.internal.LimitedDispatcher.run(LimitedDispatcher.kt:42)
        at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:95)
        at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)
        at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)
    
  • 在Android Studio的External Libraries中仅能找到JsonRpcInteractorInterface接口,找不到被internal class修饰的JsonRpcInteractor实现类,无法设置断点。
  • 尝试替换为本地修改过的依赖,但Gradle无法找到库项目;已能通过./gradlew installDebug构建WalletConnectKotlinV2项目,但不清楚构建产物位置,希望生成jar文件方便引入。
解决方法

方案1:直接定位内部类并设置断点

  1. 按下Ctrl+N(Windows/Linux)或Cmd+O(Mac)打开Android Studio的「Find Class」窗口
  2. 输入JsonRpcInteractor,勾选窗口底部的「Include non-project classes」选项
  3. 找到com.walletconnect.android.impl.json_rpc.domain.JsonRpcInteractor类并打开
  4. 在错误栈标注的第271行左侧 gutter 点击设置断点,internal修饰符不影响调试断点触发

方案2:构建本地Wallet Connect库并替换远程依赖

获取本地构建产物

  1. 克隆WalletConnectKotlinV2仓库,切换到与项目依赖版本匹配的分支(对应android-core:1.3.0、sign:2.1.0)
  2. 在仓库根目录执行构建命令:
    # 构建android-core模块的Release版本
    ./gradlew :android-core:assembleRelease
    # 构建sign模块的Release版本
    ./gradlew :sign:assembleRelease
    
  3. 构建产物为.aar文件(Android专用库格式,比jar更适配Android项目),路径分别为:
    • android-core:android-core/build/outputs/aar/android-core-release.aar
    • sign:sign/build/outputs/aar/sign-release.aar

替换Gradle依赖

  1. 将生成的.aar文件复制到项目的libs目录下
  2. 修改项目的build.gradle(或build.gradle.kts):
    • 注释掉原远程依赖:
      // implementation("com.walletconnect:android-core:1.3.0")
      // implementation("com.walletconnect:sign:2.1.0")
      
    • 添加本地aar依赖:
      implementation files("libs/android-core-release.aar")
      implementation files("libs/sign-release.aar")
      
  3. 同步Gradle后,即可使用修改过的本地库,可直接在源码中添加打印或断点

方案3:通过日志排查问题

如果暂时无法断点,可开启Wallet Connect的 verbose 日志,捕获RPC相关细节:

  1. 在应用初始化时配置日志级别:
    WalletConnect.initialize(
        context = applicationContext,
        connectionType = ConnectionType.AUTOMATIC,
        applicationMetaData = ApplicationMetaData(
            name = "你的应用名称",
            description = "应用描述",
            url = "应用URL",
            icons = listOf("应用图标URL")
        ),
        logger = Logger(LogLevel.VERBOSE)
    )
    
  2. 在Android Studio的Logcat中筛选标签包含WalletConnect的日志,可查看RPC请求、响应及错误的详细内容,辅助定位「Received unknown object type」的具体原因

内容的提问来源于stack exchange,提问作者bisgardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:21:11