如何在 .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
这里有两个问题:
- 为了使这个声明生效,必须有一个
rx.Observable
的 AIDL 声明。这是
安卓工作室错误。 AIDL 不是 Java。只是因为
rx.Observable
对 Java 编译器可见并不意味着它是
对 AIDL 编译器可见。为了您自己的理智,它赚了 很多
将所有 AIDL 放入单独的顶级源中是有意义的
文件夹。如果它没有和你的 Java 混淆,那么就会出现这样的错误
更容易被发现。
- 第二个问题更难纠正:那个
rx.Observable
的 AIDL 可见声明必须说
类似于:
package rx;
parcelable Observer;
显然,这是行不通的。 rx.Observer
不可打包。为了做你想做的事,你必须创建一个带有 AIDL 定义的 Parcelable 对象,它是 Observer
.
的代理
我想在自己的进程中创建一个服务,以便与不同的应用程序通信。
我正在按照本指南进行操作 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
这里有两个问题:
- 为了使这个声明生效,必须有一个
rx.Observable
的 AIDL 声明。这是 安卓工作室错误。 AIDL 不是 Java。只是因为rx.Observable
对 Java 编译器可见并不意味着它是 对 AIDL 编译器可见。为了您自己的理智,它赚了 很多 将所有 AIDL 放入单独的顶级源中是有意义的 文件夹。如果它没有和你的 Java 混淆,那么就会出现这样的错误 更容易被发现。 - 第二个问题更难纠正:那个
rx.Observable
的 AIDL 可见声明必须说 类似于:
package rx; parcelable Observer;
显然,这是行不通的。 rx.Observer
不可打包。为了做你想做的事,你必须创建一个带有 AIDL 定义的 Parcelable 对象,它是 Observer
.