2016-08-04 8 views
4

私は、複数のgradleモジュール(plugin com.android.library)を互いに参照する(ツリー、フラットではない)プロジェクトを持っています。私はAIDLを集中的に使用しているので、別のモジュール(modB)のAIDLインターフェイスでAIDLインターフェイスを1つのモジュール(modA)から参照しています。Gradleのモジュール/サブプロジェクト間でAIDLインターフェイスを使用

MODA/srcに/メイン/ AIDL/MODA/foo.aidl:

package modA; 
interface foo { 
    void modAcall(); 
} 

MODB/srcに/メイン/ AIDL/MODB/bar.aidl:

package modB; 
import modA.foo; 
interface bar { 
    foo modBcall(); 
} 

MODB /ビルド。 Gradleの:

dependencies { 
    compile project(':modA') 
} 

私はMODBでAIDLファイルにMODAのparcelablesを参照することができると私はMODBでMODBではなく、AIDLでJavaコードでMODAのインタフェースを参照することができます。代わりに、エラーメッセージcouldn't find import for classがaidlツールによって表示されます。

私は、.aar-filesにもライブラリのaidlインターフェイスに関する情報が含まれていないことに気付きました。パーセルテーブルのみがリストされています。私はこれが上記の問題と同じ理由を持っていると思います。

すでに1つの場所にaidlファイルがあるので、変更を手動でコピーする必要があるため、別のサブプロジェクトにコピーする必要はありません。私はmodAのものを含むようにmodBのsrcディレクトリを変更するのが間違っているので、これにシンボリックリンクを使う考え方も気に入らない。

  • aarにaidlインターフェイスを含めて他のモジュールで使用できる方法はありますか?
  • 補助モジュールのaidlファイルを使用するためにaidlインクルードパスを拡張することは可能ですか?(サブプロジェクトの場合、aidlファイルはファイルシステム上に存在するので、これは可能でなければなりません)生成されたJavaインタフェース/クラスのファイルはすでにaar/module importに含まれていますか?

答えて

5

解決策が見つかりました。 Androidのgradleビルドツールには、任意のaidlファイルを出力.aarファイルに含めるための明らかに非公開の機能があります。これにより、他のサブプロジェクトで参照できるようになります。

android { 
    aidlPackageWhiteList "modA/foo.aidl" 
} 

これは理想的ではありませんが、少なくとも私の問題を解決するのに使用できます。

+0

私はこれを試しましたが、私はそのaidlPackageWhiteListがサポートされていない得る:( – w3bMak3r

関連する問題