AIDL与JAR / AAR

时间:2017-03-27 15:21:10

标签: android

我目前是初级开发人员。我听说过IPC,现在我正在学习Android AIDL。

我已经创建了一个adb server version (36) doesn't match this client (39); killing... adb E 03-27 08:01:55 2925 147690 usb_osx.cpp:333] Could not open interface: e00002c5 adb E 03-27 08:01:55 2925 147690 usb_osx.cpp:294] Could not find device interface error: could not install *smartsocket* listener: Address already in use ADB server didn't ACK * failed to start daemon * error: cannot connect to daemon文件,我已经在服务中实现了.aidl中的方法,并且我在其他应用程序中使用了这些方法,但是我没有看到这一点

为什么我不能在不使用AIDL的情况下制作包含该服务的.aidl.aar文件?当我应该使用AIDL时,我应该导入.jar个文件。更一般地说,当我们使用.jar文件时,使用IPC有什么意义?

1 个答案:

答案 0 :(得分:4)

  

为什么我不能在不使用AIDL的情况下制作包含该服务的.aar或.jar文件?

来自文档https://developer.android.com/guide/components/aidl.html

  

只有当您允许来自不同应用程序的客户端访问IPC服务并希望在您的服务中处理多线程时,才需要使用AIDL。

当您在aar或jar中打包Service时,此服务可以在任何地方运行,即在应用程序的相同或不同进程中运行。 AIDL专为IPC而设计,即不同流程中的服务和应用程序。

  

更一般地说,当我们使用.jar文件时,使用IPC有什么意义?

IPC是一种操作系统提供的数据共享机制,jar是字节码分配的手段。它们是不同的东西。

假设您想要使用某人提供的服务,并且您没有其源或字节码。您只能在运行时,由提供商管理的进程中访问此服务,而不是您自己的服务。在这种情况下,您需要提供商指定的AIDL才能与服务进行通信。