web-dev-qa-db-ja.com

"flatDirs"を使用してGradleビルドにローカルの.aarファイルを追加しても機能しない

私はこの質問に気づいています: 自分のgradle build にローカルの.aarファイルを追加しても解決策が得られません。

このステートメントをbuild.gradleファイルのトップレベルに追加してみました。

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

私はまた、slidingmenu.aarファイルを/libsに入れて、それをdependenciesセクションで参照しました:compile 'com.slidingmenu.lib:slidingmenu:1.0.0@aar'

私はcompile files('libs/slidingmenu.aar')も試しましたが、運は良かったです。

何が足りないの?何か案は?

P.S Android Studio 0.8.2

152
Alexey Dmitriev

ヨシヤの答えをもとにして、私はそれをうまく動かしました。

彼の指示に従って(編集中)(ファイル - >新規 - >新規モジュール - >インポート.JAR/.AAR)、そしてあなたの.AARをインポートしてください。

それからあなたのプロジェクトのbuild.gradle(トップレベルのものではなく 'app'の下のもの)に以下を追加してください(依存関係セクションに):

dependencies {
    compile project(':Name-Of-Your-Project')
}

注プロジェクトの名前は、AARファイルをインポートした後に追加されたフォルダーの名前と一致する必要があります(最上位フォルダーの下のapp/.ideaと同じレベルにあります)。または別の言い方をすれば...

 MyApplication 
 .idea 
 app 
 build.gradle(ここで、コンパイルプロジェクト( ':ProjectName')を依存関係セクションに追加する場所)
 ProjectName (インポート後に自動的に追加され、aarファイルの名前と一致します)
 build 
 gradle 
 etc 

これはAndroid Studio 0.8.0を実行している私にとってはうまくいきました。これを行った後は、(ツールバーボタンを使用するか、File-> Synchronizeで)gradleを同期することを忘れないでください。

(私を正しい方向に導いてくれたJosiahに感謝します)

(注:これより前に、トップレベルのbuild.gradleとアプリレベルのbuild.gradleを操作しようとしてlibsフォルダーに追加してみましたが、どれも私のaarsファイルではうまくいきませんでした - jarファイルはうまくいきますが、aarファイルはうまくいきません)

287
Ashton Engberg

更新:@ amram99が述べたように、 問題 はAndroid Studio v1のリリース時点で修正されています。 .3。

以下の仕様でテストおよび検証済み

  • Android Studio v1.3
  • グラドルプラグインv1.2.3
  • Gradle v2.4

今うまくいく

  • Android Studioで「ファイル」>「新規」>「新規モジュール」>「.JAR/.AARパッケージのインポート」オプションを選択して、ローカルのaarファイルをインポートできます。 v1.3

  • ただし、これはグラドルスクリプティングに基づいているため、以下の回答はAndroid Studioの変更に関係なく有効かつ有効です。


古い回答:最近の更新で、Androidの人々はAndroid Studioの[新しいモジュールの追加]メニューオプションを使ってローカルのaarファイルを含めることをやめました。ここにリストされている 問題 を確認してください。 IDEの機能リストに出入りするものに関係なく、以下の方法はローカルのaarファイルを扱う場合に有効です(今日のテスト)。

Aarファイルをlibsディレクトリに配置し(必要ならば作成します)、次にbuild.gradleに次のコードを追加します。

dependencies {
   compile(name:'nameOfYourAARFileWithoutExtension', ext:'aar')
 }
repositories{
      flatDir{
              dirs 'libs'
       }
 }
185
Nishant.

編集:ビルド依存関係としてローカルのAARファイルを使う(現在の)正しい方法は、モジュールインポートウィザードを使うことです(File | New Module | Import)。プロジェクトのライブラリモジュールとして.aarを自動的に追加します。

古い答え

これを試して:

allprojects {
  repositories {
    jcenter()
    flatDir {
      dirs 'libs'
    }
  }
}

...

compile(name:'slidingmenu', ext:'aar')
24
Josiah

私はこれをAndroid Studio 2.1で動かしました。私は複数のプロジェクトで共有されている "Native_Ads"というモジュールがあります。

まず、Native_adsモジュール内に 'aars'という名前のディレクトリを作成し、そこにaarファイルを置きます。

ディレクトリ構造:

libs/
aars/    <-- newly created
src/
build.gradle
etc

その後、他の変更点:

最上位Gradleファイル:

allprojects {
    repositories {
        jcenter()
        // For module with aar file in it
        flatDir {
            dirs project(':Native_Ads').file('aars')
        }
    }
}

アプリモジュールのbuild.gradleファイル: - 変更なし

Settings.gradleファイル(モジュールを含めるため):

include ':app'
include 'Native_Ads'
project(':Native_Ads').projectDir = new File(rootProject.projectDir, '../path/to/Native_Ads')

Native_Adsモジュール用のGradleファイル:

repositories {
    jcenter()
    flatDir {
        dirs 'aars'
    }
}
dependencies {
    compile(name:'aar_file_name_without_aar_extension', ext:'aar')
}

それでおしまい。きれいにして造ってください。

14
Richard

最も簡単な方法は今モジュールとしてそれを追加することです

enter image description here

これはaarファイルを含む新しいモジュールを作成するので、あとでそのモジュールを依存関係として含める必要があります。

6

あなたはそれをこうすることができます。それはMavenフォーマットで行く必要があります:

repositories {
  maven { url uri('folderName')}
}

そして、あなたのAARはグループID "com.example"のためのフォルダ構造に入る必要があります:

folderName/
  com/
    example/
       verion/
          myaar-version.aar

次に依存関係として参照します。

compile 'com.example:myaar:version@aar'

versionはあなたのaarファイルのバージョンです(すなわち3.0など)。

5
agrosner

これが私の構造であり、これをどのように解決するのか。

MyProject/app/libs /mylib-1.0.0.aar

MyProject/app/myModulesFolder/myLibXYZ

Onbuild.gradle

fromProject/app/myModulesFolder/myLibXYZ

私はこれを入れました:

repositories {
   flatDir {
    dirs 'libs', '../../libs'
  }
}
compile (name: 'mylib-1.0.0', ext: 'aar')

私のサブモジュールXYZはメインモジュールからのsomelibraryに依存しています。

4
lucasddaniel

私の場合、上記の答えはどれもうまくいきませんでした。私はrepositories{ flatDir{ dirs 'libs' } }を追加するだけで、異なるproductFlavorsを持っていたので

動作しませんでした!私はlibsディレクトリの正確な位置を指定することになった:

repositories{
flatDir{
    dirs 'src/main/libs'
}

}

build.gradleに異なるproductFlavorsがあるときは、このようにflatDirsを導入すべきだと思います

3
MohammadReza

Android Studio 1.4の時点でこの問題を抱えている人のために、プロジェクト内に2つのことを含むモジュールを作成することによって機能するようになった。

  1. 次の内容のbuild.gradle:

    configurations.create("default")

    artifacts.add("default", file('facebook-Android-sdk-4.7.0.aar'))

  2. aarファイル(この例では 'facebook-Android-sdk-4.7.0.aar')

それから新しいライブラリをモジュールの依存関係として含めます。これで、プロジェクト内のソースを含めずにビルド済みのAARを使用できます。

このハックのFacebookの功績による。私はAndroid SDKをプロジェクトに統合しながら解決策を見つけました。

3
Victor Ude

私の場合は、aarファイルをlibsに入れて、

dependencies { ... api fileTree(dir: 'libs', include: ['*.aar']) ... }

build.gradleでそれは動作します。デフォルトで生成された依存関係と似ていると思います。

implementation fileTree(dir: 'libs', include: ['*.jar'])

0
Glorin

アプリのgradleファイル実装プロジェクトに以下を追加します(パス: ':プロジェクト名')

0
Dinesh.P

この行には、aarフォルダーのすべてのjarおよびlibsファイルが含まれます。

implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs/')
0
ashakirov