Android AIDL Service调试方法

问题

假设现在有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,位置在这里:
position
在这里可以查看目前在机器上运行的进程。现在应该只有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。这时候,你会发现系统就会停在断点处了。

你可能感兴趣的:(aidl,android,studio,Android)