Android Studio 将所有 aar 文件包含在一个目录中
Android Studio include all aar files in a directory
我正在为一个框架编写构建系统,用户(开发人员)可以通过插件对其进行扩展。我的问题是我无法包含所有带有掩码的 aar 文件。例如,我可以像这样包含所有 jar 文件:
compile fileTree(dir: 'libs', include: '*.jar')
但是如果我像这样包含所有 aar 文件:
compile fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
我收到一个错误:
Only Jar-type local dependencies are supported. Cannot handle: /path/to/file.aar
但是可以像这样单独包含每个文件:
compile (name:'myfile', ext:'aar')
作为解决方法,在构建期间,我需要列出 'libs' 目录中的文件,手动将所有库插入我的 build.gradle 并保持同步(或每次重写).这是一种骇人听闻的做法,因此我想知道是否有更好的做法。也许有一个 gradle 脚本可以自动完成,或者一些 gradle beta 支持这个:
compile fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
您可以将您的 aar 文件放在一个文件夹中。
您必须在 repositories
块中定义此文件夹。当然你可以使用libs文件夹
类似于:
repositories {
mavenCentral()
flatDir {
dirs 'myAarFolder'
}
}
然后你可以在你的依赖中使用像这样的东西:
dependencies {
compile(name:'nameOfYourAARFile', ext:'aar')
}
据我所知,无法将所有带有通配符的 aar 包含为 *.
首先添加 flatDir
存储库:
repositories {
flatDir {
dirs 'libs'
}
}
然后在 dependencies
部分后添加:
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'
])
}
我知道这个答案已经晚了,但对于其他来到这里的人来说,我没有使用 repository.flatDir。
只需在依赖部分
之后添加 fileTree()
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
fileTree(dir: 'libs', include: '*.aar')
.each { File file ->
dependencies.add("compile", files( 'libs/'+file.name ))
}
我正在为一个框架编写构建系统,用户(开发人员)可以通过插件对其进行扩展。我的问题是我无法包含所有带有掩码的 aar 文件。例如,我可以像这样包含所有 jar 文件:
compile fileTree(dir: 'libs', include: '*.jar')
但是如果我像这样包含所有 aar 文件:
compile fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
我收到一个错误:
Only Jar-type local dependencies are supported. Cannot handle: /path/to/file.aar
但是可以像这样单独包含每个文件:
compile (name:'myfile', ext:'aar')
作为解决方法,在构建期间,我需要列出 'libs' 目录中的文件,手动将所有库插入我的 build.gradle 并保持同步(或每次重写).这是一种骇人听闻的做法,因此我想知道是否有更好的做法。也许有一个 gradle 脚本可以自动完成,或者一些 gradle beta 支持这个:
compile fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
您可以将您的 aar 文件放在一个文件夹中。
您必须在 repositories
块中定义此文件夹。当然你可以使用libs文件夹
类似于:
repositories {
mavenCentral()
flatDir {
dirs 'myAarFolder'
}
}
然后你可以在你的依赖中使用像这样的东西:
dependencies {
compile(name:'nameOfYourAARFile', ext:'aar')
}
据我所知,无法将所有带有通配符的 aar 包含为 *.
首先添加 flatDir
存储库:
repositories {
flatDir {
dirs 'libs'
}
}
然后在 dependencies
部分后添加:
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'
])
}
我知道这个答案已经晚了,但对于其他来到这里的人来说,我没有使用 repository.flatDir。
只需在依赖部分
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.0.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}
fileTree(dir: 'libs', include: '*.aar')
.each { File file ->
dependencies.add("compile", files( 'libs/'+file.name ))
}