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


Answers

  1. あなたのプロジェクトを右クリックし、 "Open Module Settings"を選択してください。

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

  1. 「.JARまたは.AARパッケージのインポート」を選択し、 「次へ」ボタンをクリックします。

  1. 「ファイル名」フィールドの横にある省略記号ボタン「...」を使用してAARファイルを検索します。

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

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

  1. モジュールを選択し、 「OK」をクリックします。

Question

私は新しいアンドロイドビルドシステムを実験していましたが、私は小さな問題にぶつかってきました。 私は '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によって提案された構文を使用しても簡単です




前(デフォルト)

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

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

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

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




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

ローカルのflatDirリポジトリを追加する:

repositories {
    flatDir {
        dirs 'libs'
    }
} 

すべてのaarlibsディレクトリに追加して、依存関係の設定をcompileます。

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'])
}



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




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

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

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




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




以下のアプローチは最新の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クリックしTools -> Android -> Sync Project with Gradle Files




私の場合、私のライブラリにはいくつかの不備があります。私はそこから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
    ...
}