android-gradle ライブラリプロジェクト - 新しいGradle Android Build Systemを使用して外部aarパッケージを手動で組み込む方法




依存関係 作成 (15)

私の場合は、コンパイルするために「プロジェクト」を追加するだけで動作します:

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


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

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

しかし、私の問題は、依存関係をaarファイルパッケージとして提供したいということです。私がJARの場合は、プロジェクトに正しく組み込む方法がわからないようです。 私はコンパイル設定を使用しようとしましたが、これはうまくいかないようです。 私はコンパイル中にシンボルを見つけることができないので、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"
}

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

編集:現在のところ、これはまだ直接サポートされていないので、最良の代替案は@RanWakshlak

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


以下の手順に従って動作させてください(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')
}

すべてがうまくいけば、ライブラリーのエントリーがビルド→分解された

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


Androidの問題追跡ツールでこの回避策を見つけました: https://code.google.com/p/android/issues/detail?id=55863#c21 : https://code.google.com/p/android/issues/detail?id=55863#c21

トリック(修正ではない)は、.aarファイルをサブプロジェクトに分離し、ライブラリをアーティファクトとして追加することです。

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

詳細: Handling-transitive-dependencies-for-local-artifacts-jars-and-aar


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

代わりにできることはローカルのMavenリポジトリ(それよりもはるかに単純です)を設定し、そこから.aarを参照することです。

私はそれをここで働かせる方法を詳述blogpostを書いた:

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


リポジトリからaarファイルを参照できます。 Mavenはオプションですが、より簡単な解決方法があります:aarファイルをlibsディレクトリに置き、ディレクトリリポジトリを追加します。

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

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

dependencies {
  compile 'com.actionbarsherlock:actionbarsherlock:[email protected]'
}

詳細はMin'anのブログ記事をご覧ください。


私の場合、私のライブラリにはいくつかの不備があります。私はそこからaarを作成すると失敗しました。私の解決策は、libからすべてのファイルを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) so:

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
    ...
}

前(デフォルト)

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

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

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

Android Studio 3.xでもうまくいきます。


残念なことに、ここでの解決策のどれも私のために働いていません(私は未解決の依存関係があります)。 IMHOの最も簡単な方法は次のとおりです。Android Studioからプロジェクト名をハイライトし、ファイル - >新規モジュール - > JARまたはAARパッケージをインポートします。 この投稿には、クレジットが解決策になる


2つの方法があります:

  • 最初の方法

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

2:「.JAR / .AARパッケージのインポート」項目を選択し、「次へ」ボタンをクリックします。

3:あなたのapp Modlueに属するbuild.gradleファイルに依存関係を追加する。

dependencies {
    ...

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

}

そのすべて。

  • 第二の方法

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

2 aarフォルダにaar libを入れます。

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

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

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

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

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

そのすべて

あなたが中国語を読むことができれば、あなたはブログをチェックすることができます什么是AAR文件以及如何在Android开发中使用


私はちょうど成功しました!

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

  2. これらの行をbuild.gradleの下に追加します(プロジェクトではなくappでなければなりません)。

    repositories {
       flatDir {
           dirs 'libs'
       }
    }
    dependencies {
        compile 'com.example.lib:mylib:[email protected]'
    }
    
  3. ここまでは順調ですね。 ここで最も重要な点があります。

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

Project Structures / Gradleのチェックボックスを使用してオフライン作業を有効にしていることを確認してください

- または -

ネットワークにアクセスするためにプロキシ設定を構成します。

プロキシ設定を行うには、プロジェクトの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>

これがうまくいきたいです。


私はここにすべての解決策を試みたが、誰も働いていない、私は間違いを犯したことに.aarた、私は間違ったフォルダに.aarを入れた、あなたが下に見ることができるように、私はルートフォルダに入れるべきだと思ったので、 1)、しかし、アプリのフォルダ内に既にlibsあります、あなたは2番目のlibsに入れて、これは私のものと同じ問題を抱えている人を助けることを願って:


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

「ファイル」>「新規」>「新規モジュール」をクリックします。 「.JAR / .AARパッケージのインポート」をクリックし、「次へ」をクリックします。 コンパイルされたAARファイルまたはJARファイルの場所を入力し、「完了」をクリックします。

上記のリンクを参照して次の手順を確認してください。


答えを簡単にするだけです

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

.aarファイルがリモートに存在する場合は、プロジェクトのbuild.gradleに依存してcompile 'com.*********.sdk:project_directory:[email protected]'をインクルードしcompile 'com.*********.sdk:project_directory:[email protected]'


私もこの問題を抱えています。 この問題のレポート: issue ://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で定義されています。


Android Gradleプラグインのバージョン0.11がリリースされました(6/6/14)。 build.gradleの設定を「0.10。+」に変更します。

classpath 'com.android.tools.build:gradle:0.10.+'

注:Android StudioとAndroid SDK(特にビルドツール)を更新するまでこれは一時的な解決策見なされます。





android gradle android-gradle build.gradle