问题

假设现在有A和B两个进程,它们之间通过AIDL通信,其中A注册了一个Service,B调用了该Service。而你即使在service当中打了断点,无论对A还是对B进行Debug都还是无法停在断点处。如何解决这个问题?

解决方案

环境:Android Studio 1.5

步骤1

首先定位到A的Manifest中注册Service的部分,在android:name后增加一句:

android:process=":remote"

即让A的Service成为远程可访问的。

步骤2

让A首先在机器上运行。这时候,进程列表只会增加一个com.example.A

步骤3

打开Attach debugger to Android process,位置在这里:

在这里可以查看目前在机器上运行的进程。现在应该只有com.example.A(系统进程不算)

步骤4

这时候,先运行B,有出错也不要紧。重要的是让com.example.A:remote进程运行起来,它就是B所调用的A的远程服务(是A提供的)。可以在Attach debugger to Android process处确认该进程已启动。

步骤5

最重要的一步,再次打开Attach debugger to Android process,选择com.example.A:remote然后确认。这时候,在A的Service类中你想要debug的地方打上断点。

步骤6

对B进行debug。这时候,你会发现系统就会停在断点处了。

更多相关文章

  1. 背部如何画好?动漫人物背部画法步骤
  2. Android后台保活套路分析
  3. Android基础和运行机制
  4. Android原生程序与Flutter交互具体实现
  5. 重看android(二) android启动
  6. Android(安卓)low memory killer 详解
  7. 最新历史版本 :浅析Android线程模型
  8. Android(安卓)系统基础
  9. Android基础和运行机制

随机推荐

  1. listview使用小技巧
  2. ROS与Android的通信
  3. Android(安卓)SDK下载地址
  4. Android初级教程小案例之单选框RadioGrou
  5. Android(安卓)登录界面Demo源码
  6. java/android 统计文件夹大小及删除文件
  7. Android之SimpleAdapter简单实例和Simple
  8. EditText android:windowSoftInputMode
  9. Android(安卓)EditText 为空提示 密码隐
  10. 【摘录】How do you change the drawing