问题
假设现在有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。这时候,你会发现系统就会停在断点处了。