0

android.os.Bundle を使用するプロジェクト (JavaLibrary と呼びます) で Java 注釈プロセッサを作成しました。そのため、プロジェクトの gradle.build 依存関係には次の行があります。

compile 'com.google.android:android:4.1.1.4'

gradle.build ではsourceCompatibilitytargetCompatibility両方ともバージョン 1.6 に設定されており、このプロジェクトは単独で問題なくコンパイルされます。

また、JavaLibrary に依存する Android ライブラリ プロジェクト (これを AndroidLibrary と呼びます) も作成しました。JavaLibrary が AndroidLibrary で使用されるいくつかの注釈を処理し、いくつかのコードを生成することを期待しています。

ただし、AndroidLibrary をコンパイルしようとすると、次のエラーが発生します。

java.lang.NoClassDefFoundError: android/os/Bundle

スタック トレースは、Android.os.Bundle が JavaLibrary で参照されている行を示しています。

これはなぜですか? また、これら 2 つのプロジェクトを一緒にコンパイルするにはどうすればよいですか?

4

1 に答える 1

0

Gradleパーツについてはわかりません。ビルド対象の Android OS jar は単なる API スタブであり、デバイスによって「提供」されるため、エクスポートしないでください。

Java プロジェクトで Android クラスを使用するには、必要な Java ソース ファイル (およびその依存関係) がネイティブ コードまたは内部コードを参照しない限り、必要な Java ソース ファイルを Java プロジェクトにコピーできます。

そこにバンドルが必要な理由はわかりませんが、ソースの GrepCode のコピーへのリンクは次のとおりです。

http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.2.1_r1/android/os/Bundle.java

于 2013-10-13T00:53:27.510 に答える