2016-08-21 7 views
1

異なるアプリケーションと通信するために、独自のプロセスでサービスを作成したいと考えています。.aidlファイルでサードパーティのクラスをインポートする方法

私はこのガイドhttp://www.donnfelker.com/rxjava-with-aidl-services/に従っていますが、.aidlファイルに問題があります。

これは私のAIDLインターフェイスです:

// MyAidlInteface.aidl 
package my.package; 

import rx.Observable; 

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

Androidのメーカーは私に次のエラーを与え、私が何をするか分からない:

couldn't find import for class rx.Observable

答えて

2

ここでは二つの問題があります。

  1. この宣言が機能するためには、 rx.ObservableのAIDL宣言。これは AndroidStudioエラーの原因です。 AIDLはJavaではありません。ちょうど rx.ObservableがJavaコンパイラに見えるからといって、AIDLコンパイラには が表示されているわけではありません。あなた自身の正気のために、lot あなたのすべてのAIDLを別のトップレベルのソース フォルダに入れることができます。 Javaと混同されていない場合は、 のようなエラーが見つけやすくなります。
  2. 第二の問題は、修正するためにはるかに困難である:動作しませんよう、
  3. 明らか
package rx; 

parcelable Observer; 

rx.Observableため AIDL可視宣言のような 何かを言わなければならないだろうと。 rx.ObserverはParcelableではありません。あなたがしようとしていることをするためには、ObserverへのプロキシであるAIDL定義を持つParcelableオブジェクトを作成する必要があります。

+0

Observer(Proxy)の分解可能オブジェクトの作成について説明してください。私はこれを達成する方法がわからない –

+0

何かこれのようなもの:https://stackoverflow.com/questions/44146041/how-do-i-make-my-realm-object-a-java-object/44210668#44210668 –

関連する問題