如何在 .aidl 文件中导入第三方 类

How to import third party classes in .aidl file

我想在自己的进程中创建一个服务,以便与不同的应用程序通信。

我正在按照本指南进行操作 http://www.donnfelker.com/rxjava-with-aidl-services/,但我在使用 .aidl 文件时遇到问题。

这是我的aidl界面:

// MyAidlInteface.aidl
package my.package;

import rx.Observable;

interface MyAidlInterface {
    Observable<Integer> getPid();
}

Android Studio 出现以下错误,我不知道该怎么办:

couldn't find import for class rx.Observable

这里有两个问题:

  1. 为了使这个声明生效,必须有一个 rx.Observable 的 AIDL 声明。这是 安卓工作室错误。 AIDL 不是 Java。只是因为 rx.Observable 对 Java 编译器可见并不意味着它是 对 AIDL 编译器可见。为了您自己的理智,它赚了 很多 将所有 AIDL 放入单独的顶级源中是有意义的 文件夹。如果它没有和你的 Java 混淆,那么就会出现这样的错误 更容易被发现。
  2. 第二个问题更难纠正:那个 rx.Observable 的 AIDL 可见声明必须说 类似于:
package rx;

parcelable Observer;

显然,这是行不通的。 rx.Observer 不可打包。为了做你想做的事,你必须创建一个带有 AIDL 定义的 Parcelable 对象,它是 Observer.

的代理