私は新しい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によって提案された構文を使用して簡単に
以下の手順に従って動作させてください(私は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に含める必要があります。
リポジトリからaarファイルを参照できます。 Mavenはオプションですが、もっと簡単な解決策があります:aarファイルをあなたのlibsディレクトリに置き、ディレクトリリポジトリを追加することです。
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
次に依存関係セクションでライブラリを参照します。
dependencies {
compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}
Min'anブログ投稿 を参照してください。
以下のアプローチは最新の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
をクリック
前(デフォルト)
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')
現在、ローカルの.aarファイルを参照することはサポートされていません(Xavier Ducrochetによる確認のとおり)。
代わりにできることは、ローカルのMavenリポジトリをセットアップし(それが聞こえるよりはるかに単純な)、そこから.aarを参照することです。
私はそれがどのように動くようにするかを詳述したブログポストを書きました:
http://www.flexlabs.org/2013/06/using-local-aar-Android-library-packages-in-gradle-builds
私は成功しました!
mylib-0.1.aar ファイルを libs/ フォルダーにコピーします。
これらの行を build.gradle の最後に追加します(プロジェクトではなく、appにする必要があります)。
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
compile 'com.example.lib:mylib:0.1@aar'
}
ここまでは順調ですね。これが最も重要な点です。
オフラインモードが有効になっていない限り、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>
これがうまくいくことを願っています。
数行のコードで複数のaar
依存関係を追加できます。
ローカルのflatDir
リポジトリを追加します。
repositories {
flatDir {
dirs 'libs'
}
}
aar
ディレクトリ内のすべてのlibs
を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'])
}
残念ながら、ここでの解決策のどれも私のために働きませんでした(私は未解決の依存関係を得ます)。最後にうまくいった、そして最も簡単な方法は私見です。AndroidStudioでプロジェクト名をハイライトし、File - > New Module - > Import JAR or AAR Packageを選択します。クレジットは この記事の解決策に行きます
私もこの問題を抱えています。この問題の報告: 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
2つの方法があります。
1:Android Studioを開き、[ファイル] - > [新規] - > [新しいモジュール]を選択して[Create New Module]ウィンドウに移動します。
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開発中での使用
私の場合、ライブラリに依存関係があり、そこから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
...
}
アプリケーションにAARファイルをインポートする標準的な方法は https://developer.Android.com/studio/projects/Android-library.html#AddDependency にあります。
ファイル>新規>新規モジュールをクリックします。 Import .JAR/.AAR PackageをクリックしてからNextをクリックします。コンパイル済みのAARファイルまたはJARファイルの場所を入力してから、「完了」をクリックします。
次のステップについては上のリンクを参照してください。
私は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
答えを単純化するためだけに
.aarファイルがローカルに存在する場合compile project(':project_directory')
あなたのプロジェクトのbuild.gradleの依存関係。
リモートに.aarファイルがある場合は、プロジェクトのbuild.gradleの依存関係にcompile 'com.*********.sdk:project_directory:0.0.1@aar'
を含めます。
Android Studio 3.4とGradle 5では、このようにすることができます。
dependencies {
implementation files('libs/actionbarsherlock.aar')
}
私の場合は、コンパイルするために "project"を追加したときに動作します。
repositories {
mavenCentral()
flatDir {
dirs 'libs'
}
}
dependencies {
compile project('com.x.x:x:1.0.0')
}
あなたはこのようなことをすることができます:
ローカルライブラリ(拡張子:.jar、.aarなど)を 'libs'フォルダ(または必要に応じて別のフォルダ)に置きます。
Build.gradle(アプリレベル)で、この行を依存関係に追加します。
実装ファイルツリー(:['* .jar'、 '* .aar']、dir: 'libs')