こんにちは、AAR を生成する Android ライブラリ プロジェクトがあります。
すべて問題ありませんが、別のプロジェクトで AAR を使用すると、次のエラーが発生します。
java.lang.NoClassDefFoundError: com.squareup.picasso.Picasso
AAR は picasso を利用します。AAR を生成するときに、AAR の依存関係もエクスポートできますか?
こんにちは、AAR を生成する Android ライブラリ プロジェクトがあります。
すべて問題ありませんが、別のプロジェクトで AAR を使用すると、次のエラーが発生します。
java.lang.NoClassDefFoundError: com.squareup.picasso.Picasso
AAR は picasso を利用します。AAR を生成するときに、AAR の依存関係もエクスポートできますか?
ローカルのMavenレポを設定するにはどうすればよいですか。
警告: 次のレシピは機能しますが、私はMaven の専門家とはほど遠いので、おそらく改善することができます。私は昨年、自分の CWAC ライブラリで使用するためにこのアプローチを打ち出しました。
ステップ #1:ライブラリ プロジェクトのファイルのブロックに追加classpath 'com.github.dcendents:android-maven-plugin:1.0'
します。また、ステートメントを追加して、AAR に関する情報を提供します。buildscript
dependencies
build.gradle
version
group
ステップ 2: gradle install
AAR をコンパイルし、デフォルトのローカル Maven リポジトリにインストールするために使用します。
ステップ #3: 通常、アプリケーション プロジェクトmavenLocal()
のブロックに追加してdependencies
、アーティファクト ID を介して AAR を取得します。少し壊れていましたが、それは再び機能する可能性があります。代わりに、maven { url "${System.env.HOME}/.m2/repository" }
短期的な回避策として使用してください。
たとえば、ライブラリ プロジェクトbuild.gradle
ファイルには次のものが含まれる場合があります。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
classpath 'com.github.dcendents:android-maven-plugin:1.0'
}
}
apply plugin: 'android-library'
apply plugin: 'android-maven'
version '0.4.0'
group 'some.likely.group.name.goes.here'
repositories {
mavenCentral()
}
dependencies {
compile 'com.squareup.picasso:picasso:2.2.0'
compile fileTree(dir: 'libs', include: '*.jar')
}
android {
// as normal
}
gradle install
JAR をローカルの Maven リポジトリに公開するために使用します。次に、アプリケーション プロジェクトの に次のものがありますbuild.gradle
。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.9.+'
}
}
apply plugin: 'android'
repositories {
mavenCentral()
maven { url "${System.env.HOME}/.m2/repository" } // mavenLocal()
}
dependencies {
compile 'some.likely.group.name.goes.here:name-of-library:0.4.0'
}
android {
// as normal
}
置き換える場所:
some.likely.group.name.goes.here
何かと
0.4.0
XYZ 形式のバージョン番号を持つ
name-of-library
Android ライブラリ プロジェクトを含むディレクトリ名になります (例:presentation
またはfoo
) 。