Gradleを使用してプロジェクトをビルドしようとすると、次のエラーが発生します。
Failed to resolve: com.trnql:lib-release 1.0.0
LibsフォルダーにあるAndroidアーカイブファイル(aar)が見つからないようです。build.gradleファイルの依存関係セクションは次のようになります。
そして、プロジェクトの構造は次のようになります。
Aarファイルは有効ですが、ビルドシステムによって解決されません。この問題を解決するにはどうすればよいですか?
ここでの問題は、gradleが宣言されたリポジトリの1つでこのaarを見つけようとすることです。 libsディレクトリはリポジトリではありません...しかし、次のように宣言できます。
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
そしてgradleはそれを見つけるでしょう。
新しいAndroid studioプロジェクトを作成すると、最上位のbuild.gradleにbuildscriptとallprojectパーツ(以下を参照)が含まれます)、および
flatDir {
dirs 'libs'
}
buildscriptのリポジトリに追加すると、機能しません。
次のように、それをallprojectsのリポジトリに貼り付ける必要があります。
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:2.2.3'
}
}
allprojects {
repositories {
jcenter()
flatDir {
dirs 'libs'
}
}
}
私の場合、私のライブラリモジュールでは、build.gradleは次のようになります。
buildscript {
repositories {
flatDir {
dirs "libs"
}
}
}
buildscript
ビットを削除して、最終的に次のようになるようにしました。
repositories {
flatDir {
dirs "libs"
}
}
その後、同期してビルドできました。
aarファイルをlibs dirに入れ、次にbuild.gradleファイルの一部を以下のように変更します。違いは、fileTreeのコンパイル時に* .aarを逃したことです。
repositories {
flatDir {
dirs 'libs'
}
}
compile fileTree(dir:'libs', include:['*.jar', '*.aar'])
そして、できるだけ完全にするために、サブモジュールの別のディレクトリにAARを置きたいとしましょう...
次に、TOP LEVELプロジェクトのbuild.gradleファイルで、次のようにします。
buildscript {
// stuff here
}
allprojects {
repositories {
// all your standard stuff, jcenter, maven, etc
flatDir {
dirs project(':MY_MODULE_NAME').file('MODULE_SUB_DIRECTORY')
}
}
}
モジュールディレクトリのレイアウトが次のようになっている場合:
MyFancyModule/
/aars <-- aar files go here
/build
/libs <-- jar files go here
/src
build.gradle <-- this is NOT your top level gradle file
次に、TOP LEVEL GRADLEファイルの行は次のようになります。
dirs project(':MyFancyModule').file('aars')