web-dev-qa-db-ja.com

新しいGradle Android Build Systemを使用して外部のaarパッケージを手動で含む方法

私は新しいAndroidビルドシステムを試していて、小さな問題にぶつかった。私は私自身が 'actionbarsherlock.aar'と呼んだActionBarSherlockの私自身のaarパッケージをコンパイルしました。私がやろうとしていることは実際に私の最終的なAPKを構築するためにこのaarを使うことです。コンパイルプロジェクト( ':actionbarsherlock')を使用してメインのプロジェクトにAndroidライブラリモジュールとしてActionBarSherlockライブラリ全体を含めると、問題なくビルドできます。

しかし、私が抱えている問題は、JARファイルを作成する場合にだけ、その依存関係をaarファイルパッケージとして手動で提供したいということです。そうすれば、それを自分のプロジェクトに適切に含める方法がわかりません。私はコンパイル設定を使用しようとしましたが、これはうまくいかないようです。私はコンパイル中にシンボルが見つからないということを続けています。これはaarパッケージのclasses.jarがクラスパスに含まれていないことを示しています。

誰かが手動でファイルとしてaarパッケージを含めるための構文を知っていますか?

build.gradle

buildscript {

 repositories {
     mavenCentral()
  }
  dependencies {
    classpath 'com.Android.tools.build:gradle:0.4'
  }
}
apply plugin: 'Android'

repositories {
   mavenCentral()
}
dependencies {
    compile files('libs/actionbarsherlock.aar')
}

Android {
    compileSdkVersion 15
    buildToolsVersion "17.0"
}

編集:答えはそれは現在サポートされていないということです、あなたがそれを追跡したい場合はここに 問題 です。

編集:現在これはまだ直接サポートされていないので最善の選択肢は@RanWakshlakから提案された解決策のようです

編集:また@VipulShahによって提案された構文を使用して簡単に

352
Miguel Lavigne

以下の手順に従って動作させてください(私はAndroid Studio 2.2までテストしました)

あなたはlibsフォルダにaarファイルを保存したとしましょう。 (ファイル名はcards.aarとします)

次にアプリbuild.gradleで以下を指定してプロジェクトをGradleファイルと同期するをクリックします。プロジェクトレベルのbuild.gradleを開き、以下のようにflatDir{dirs 'libs'}を追加します。

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

そして今、アプリレベルのbuild.grdleファイルを開き、.aarファイルを追加します

    dependencies {
       compile(name:'cards', ext:'aar')
}

すべてうまくいけば、ライブラリエントリがbuild - > explored-aarで作成されるのがわかります。

また、依存関係を持つ別のプロジェクトから.aarファイルをインポートしている場合は、それらもbuild.gradleに含める必要があります。

610
Vipul Shah
  1. プロジェクトを右クリックして "Open Module Settings" を選択します。

Open module settings

  1. 新しいモジュールを追加するには、ウィンドウの左上隅にある "+" ボタンをクリックしてください。

Add new module

  1. "Import .JARまたは.AAR Package" を選択し、 "Next" ボタンをクリックします。

Import AAR

  1. [ファイル名]フィールドの横にある省略記号ボタン "..." を使用してAARファイルを見つけます。

Find AAR file

  1. アプリのモジュールを選択したままにし、 Dependencies ペインをクリックして新しいモジュールを依存関係として追加します。

Dependencies pane

  1. 依存関係画面の "+" ボタンを使用して、 "Module dependency" を選択します。

Add module dependency

  1. モジュールを選択して "OK" をクリックします。

Choose module

219
Oliver Kranz

リポジトリからaarファイルを参照できます。 Mavenはオプションですが、もっと簡単な解決策があります:aarファイルをあなたのlibsディレクトリに置き、ディレクトリリポジトリを追加することです。

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

次に依存関係セクションでライブラリを参照します。

dependencies {
  compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}

Min'anブログ投稿 を参照してください。

100
Ran Wakshlak

以下のアプローチは最新のAndroidスタジオ(> v0.8.x)で動作します。

  • aarファイルをアプリモジュールのlibsフォルダーに保存します(例:<project>/<app>/libs/myaar.aar

  • あなたの "app"モジュールフォルダのbuild.gradleに以下を追加してください(あなたのプロジェクトルートbuild.gradleではなく)。コンパイル行の名前に注意してください、myaar @ aarはmyaar.aarではありません。

    dependencies {
        compile 'package.name.of.your.aar:myaar@aar'
    }
    
    repositories{
        flatDir{
            dirs 'libs'
        }
    }
    
  • Tools -> Android -> Sync Project with Gradle Filesをクリック

43
ashoke

前(デフォルト)

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

include配列に'*.aar'を追加するだけです。

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

それはAndroid Studio 3.xでうまく動きます。

あなたがいくつかのライブラリを無視したい場合は?こんな感じ。

implementation fileTree(include: ['*.jar', '*.aar'], exclude: 'test_aar*', dir: 'libs')
debugImplementation files('libs/test_aar-debug.aar')
releaseImplementation files('libs/test_aar-release.aar')
26
susemi99

現在、ローカルの.aarファイルを参照することはサポートされていません(Xavier Ducrochetによる確認のとおり)。

代わりにできることは、ローカルのMavenリポジトリをセットアップし(それが聞こえるよりはるかに単純な)、そこから.aarを参照することです。

私はそれがどのように動くようにするかを詳述したブログポストを書きました:

http://www.flexlabs.org/2013/06/using-local-aar-Android-library-packages-in-gradle-builds

20
Artiom Chilaru

私は成功しました!

  1. mylib-0.1.aar ファイルを libs/ フォルダーにコピーします。

  2. これらの行を build.gradle の最後に追加します(プロジェクトではなく、appにする必要があります)。

    repositories {
       flatDir {
           dirs 'libs'
       }
    }
    dependencies {
        compile 'com.example.lib:mylib:0.1@aar'
    }
    
  3. ここまでは順調ですね。これが最も重要な点です。

オフラインモードが有効になっていない限り、Gradleは依存関係についてネットワークにアクセスする必要があります。

オフライン作業 のチェックボックスで プロジェクト構造/ Gradle が有効になっていることを確認してください。

- OR -

ネットワークにアクセスするために プロキシ設定 を設定してください。

プロキシ設定を構成するには、プロジェクトの gradle.properties ファイルを変更し、httpとhttpsを以下のように別々に構成する必要があります。

systemProp.http.proxyHost=proxy.example.com
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=user
systemProp.http.proxyPassword=pass
systemProp.http.nonProxyHosts=localhost
systemProp.http.auth.ntlm.domain=example <for NT auth>

systemProp.https.proxyHost=proxy.example.com
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=user
systemProp.https.proxyPassword=pass
systemProp.https.nonProxyHosts=localhost
systemProp.https.auth.ntlm.domain=example <for NT auth>

これがうまくいくことを願っています。

18
Orhun D.

数行のコードで複数のaar依存関係を追加できます。

ローカルのflatDirリポジトリを追加します。

repositories {
    flatDir {
        dirs 'libs'
    }
} 

aarディレクトリ内のすべてのlibscompile依存関係設定に追加します。

fileTree(dir: 'libs', include: '**/*.aar')
        .each { File file ->
    dependencies.add("compile", [name: file.name.lastIndexOf('.').with { it != -1 ? file.name[0..<it] : file.name }, ext: 'aar'])
}
18
mixel

残念ながら、ここでの解決策のどれも私のために働きませんでした(私は未解決の依存関係を得ます)。最後にうまくいった、そして最も簡単な方法は私見です。AndroidStudioでプロジェクト名をハイライトし、File - > New Module - > Import JAR or AAR Packageを選択します。クレジットは この記事の解決策に行きます

13
Nonos

私もこの問題を抱えています。この問題の報告: https://code.google.com/p/Android/issues/detail?id=55863 .AARファイルを直接参照することはサポートされていないことを示唆しているようです。

おそらく今のところ代替案はあなたのプロジェクトの親ディレクトリの下にGradleライブラリとしてactionbarsherlockライブラリを定義し、それに応じて参照することです。

構文はここで定義されています http://tools.Android.com/tech-docs/new-build-system/user-guide#TOC-Referencing-a-Library

6
user937783

2つの方法があります。

  • 最初の方法

1:Android Studioを開き、[ファイル] - > [新規] - > [新しいモジュール]を選択して[Create New Module]ウィンドウに移動します。

enter image description here

2:「Import .JAR/.AAR Package」項目を選択して「次へ」ボタンをクリックします

3:app Modlueに属するbuild.gradleファイルに依存関係を追加します。

dependencies {
    ...

    implementation project(path: ':your aar lib name')

}

それだけです。

  • 第二の方法

1 libsなどのフォルダをaarsディレクトリに作成します。

2 aarライブラリをaarsフォルダに入れます。

3コードスニペットを追加する

repositories { flatDir { dirs 'libs/aars' } }

あなたのbuild.gradleファイルにはアプリモジュールに属しています。

4 app Modlueに属するbuild.gradleファイルに依存関係を追加します。

dependencies { ... compile(name:'your aar lib name', ext:'aar') }

そのすべて

あなたが中国語を読むことができれば、あなたはブログをチェックすることができます AARファイルやその他のAndroid開発中での使用

6
shusheng007

ここですべてのソリューションを試してみましたが、どれも機能していませんが、間違いを犯したことに気づき、.aarを間違ったフォルダに入れました。以下に示すように、ルートフォルダに入れるべきだと思い、libsを作成しましたフォルダー(図では1)ですが、アプリフォルダー内には既にlibsがあります。2番目のlibsを入力する必要があります。

enter image description here

3
GMsoF

私の場合、ライブラリに依存関係があり、そこからaarを作成すると失敗しました。依存関係を見逃したために失敗したので、私の解決策はarrファイルを使用してライブラリからすべての依存関係を追加することです。

だから私のプロジェクトレベルbuild.gradleはそう見える:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:2.1.2'
    }
}

allprojects {
    repositories {
        mavenCentral()
        //add it to be able to add depency to aar-files from libs folder in build.gradle(yoursAppModule)
        flatDir {
            dirs 'libs'
        }
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

build.gradle(modile app)だから:

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        applicationId "com.example.sampleapp"
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    //your project depencies
    ...
    //add lib via aar-depency
    compile(name: 'aarLibFileNameHere', ext: 'aar')
    //add all its internal depencies, as arr don't have it
    ...
}

ライブラリbuild.gradle

apply plugin: 'com.Android.library'

Android {
    compileSdkVersion 23
    buildToolsVersion "23.0.3"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    //here goes library projects dependencies, which you must include
    //in yours build.gradle(modile app) too
    ...
}
3
mohax

アプリケーションにAARファイルをインポートする標準的な方法は https://developer.Android.com/studio/projects/Android-library.html#AddDependency にあります。

ファイル>新規>新規モジュールをクリックします。 Import .JAR/.AAR PackageをクリックしてからNextをクリックします。コンパイル済みのAARファイルまたはJARファイルの場所を入力してから、「完了」をクリックします。

次のステップについては上のリンクを参照してください。

3
garnet

UPDATE Android STUDIO 3.4

  1. File->Project Structureに移動します

enter image description here

  1. モジュールをクリックし、+をクリックします

enter image description here

  1. 。aarパッケージのインポートを選択します

enter image description here

  1. .aarルートを見つける

enter image description here

  1. FinishおよびApply、パッケージが追加されているかどうかを確認

enter image description here

  1. アプリモジュールで、+およびModule Dependencyをクリックします

enter image description here

  1. ライブラリパッケージを確認し、Ok

enter image description here

  1. 追加された依存関係を確認する

enter image description here

  1. そして、このようなプロジェクト構造

enter image description here

2
Álvaro Agüero

私はAndroidの問題追跡システムでこの回避策を見つけました: https://code.google.com/p/Android/issues/detail?id=55863#c21

トリック(修正ではありません)は、.aarファイルをサブプロジェクトに分離し、libを成果物として追加することです。

configurations.create("default")
artifacts.add("default", file('somelib.jar'))
artifacts.add("default", file('someaar.aar'))

さらに詳しい情報: ローカルアーティファクトの推移的依存関係-jars-and-aar

2
jiparis

答えを単純化するためだけに

.aarファイルがローカルに存在する場合
compile project(':project_directory')あなたのプロジェクトのbuild.gradleの依存関係。

リモートに.aarファイルがある場合は、プロジェクトのbuild.gradleの依存関係にcompile 'com.*********.sdk:project_directory:0.0.1@aar'を含めます。

2
anupam_kamble

Android Studio 3.4とGradle 5では、このようにすることができます。

dependencies {
    implementation files('libs/actionbarsherlock.aar')
}
1
m0skit0

私の場合は、コンパイルするために "project"を追加したときに動作します。

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


dependencies {
   compile project('com.x.x:x:1.0.0')
}
0
josedlujan

あなたはこのようなことをすることができます:

  1. ローカルライブラリ(拡張子:.jar、.aarなど)を 'libs'フォルダ(または必要に応じて別のフォルダ)に置きます。

  2. Build.gradle(アプリレベル)で、この行を依存関係に追加します。

    実装ファイルツリー(:['* .jar'、 '* .aar']、dir: 'libs')

0
nguyencse