web-dev-qa-db-ja.com

Gradleビルドでaarライブラリの依存関係を解決できませんでした(trnql sdk)

Gradleを使用してプロジェクトをビルドしようとすると、次のエラーが発生します。

Failed to resolve: com.trnql:lib-release 1.0.0

LibsフォルダーにあるAndroidアーカイブファイル(aar)が見つからないようです。build.gradleファイルの依存関係セクションは次のようになります。

enter image description here

そして、プロジェクトの構造は次のようになります。

enter image description here

Aarファイルは有効ですが、ビルドシステムによって解決されません。この問題を解決するにはどうすればよいですか?

9
Cognitio

ここでの問題は、gradleが宣言されたリポジトリの1つでこのaarを見つけようとすることです。 libsディレクトリはリポジトリではありません...しかし、次のように宣言できます。

repositories {
    mavenCentral()
    flatDir {
        dirs 'libs'
    }
}

そしてgradleはそれを見つけるでしょう。

40
ben75

新しい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'
        }
    }
}
17
Andras Kloczl

私の場合、私のライブラリモジュールでは、build.gradleは次のようになります。

buildscript {
    repositories {
        flatDir {
            dirs "libs"
        }
    }
}

buildscriptビットを削除して、最終的に次のようになるようにしました。

repositories {
    flatDir {
        dirs "libs"
    }
}

その後、同期してビルドできました。

4
Tash Pemhiwa

aarファイルをlibs dirに入れ、次にbuild.gradleファイルの一部を以下のように変更します。違いは、fileTreeのコンパイル時に* .aarを逃したことです。

repositories {
    flatDir {
        dirs 'libs'
    }
}

compile fileTree(dir:'libs', include:['*.jar', '*.aar'])
2
huangxin

そして、できるだけ完全にするために、サブモジュールの別のディレクトリに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')
2
Richard