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

时间:2016-08-21 17:55:01

标签: android rx-java aidl

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

我正在关注本指南http://www.donnfelker.com/rxjava-with-aidl-services/,但我遇到了.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 个答案:

答案 0 :(得分:3)

这里有两个问题:

  1. 为了使这个声明有效,必须有一个 rx.Observable的AIDL声明。这是该的来源 AndroidStudio错误。 AIDL不是Java。只是因为 Java编译器可以看到rx.Observable并不意味着它 对AIDL编译器可见。为了你自己的理智,它会产生一个很多 将所有AIDL放入单独的顶级源中的意义 夹。如果它没有与你的Java混淆,那么这样的错误 更容易发现。
  2. 第二个问题要纠正得更难:那个 rx.Observable的AIDL可见声明必须说明 类似的东西:
  3. package rx;
    
    parcelable Observer;
    

    显然,这不会奏效。 rx.Observer不是Parcelable。为了完成您要执行的操作,您必须创建一个带有AIDL定义的Parcelable对象,该对象是Observer的代理。