我正在为一个框架编写构建系统,用户(开发人员)可以通过插件对其进行扩展。我的问题是我无法包含所有带有掩码的 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'])
最佳答案
首先添加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'
])
}
关于Android Studio 将所有 aar 文件包含在一个目录中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31081506/