における第三のlibを含めることはできませんなぜ私が持っていた問題
"java.lang.NoClassDefFoundErrorが:の失敗解像度:Lorg/apacheの/コモンズ/ langが/のStringUtils;"
私は自分のアンドロイドのlibでdepondsアンドロイドアプリを実行しようとしたとき。
Fllowingは私の手順です:
は、Androidプロジェクトを作成し、それに「sptvlib」という名前の新しいモジュールを構築しました。
このモジュールは「sptvlib」のGradleファイルを参照lib.please文字列utilsのある「共通-LANG」という名前のサードパーティ製のlibに依存します:プロジェクト全体を構築した後libのモジュールは、Androidスタジオ
dependencies {
...
compile 'org.apache.directory.studio:org.apache.commons.lang:2.6'
...
}
を、私が得ましたモジュールsptvlib.aarファイルにコピーし、別のアンドロイドアプリプロジェクトの "libs"ディレクトリにコピーしました。
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
...
compile(name: 'sptvlib', ext: 'aar')
...
}
私は正常にこのアプリを構築し、それが実行したときに、logcatは "java.lang.NoClassDefFoundErrorが" エラーを示しました。 私は "commons.lang"宣言をアプリケーションプロジェクトgradleに再追加しなければなりません。そしてそれは正常に実行されます。私たちは第三者のlibを自分のモジュールに追加しました。自分のモジュールに依存しているアプリが、ランタイムにそれを見つけることができないのはなぜですか?
so ... "sptvlib.aar"を構築したのは、 "rxjava"や "retrofit"などのような実際のライブラリではありません。もし他のアプリが "sptvlib"の機能を使用しているのであれば"commons.lang" libを実行してokを実行すると、各アプリケーションプロジェクトで新しいモジュールを作成し、 "sptvlib"コードをコピーする必要があります。他のアプリが "commons.lang" libに依存する "sptvlib"の機能を使用している場合、本当にありがとう^ _^ –
libは完全に動作するはずです。しかし、あなたは "commons.lang"の機能をアプリで直接使うことはできません。 – nnn
私のアプリは3番目のlibの機能を直接使用せず、3番目のlibに依存するsptvlibのいくつかのメソッドを呼び出すだけです... –