我正在为一个框架编写一个构建系统,可以通过用户(开发人员)的插件进行扩展。我的问题是我不能用掩码包含所有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并保持同步(或每次重写)。这是一种做法的hackish方式,因此我想知道是否有更好的方法。也许有一个gradle脚本可以自动执行或者一些gradle beta支持这个:
compile fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
答案 0 :(得分:17)
首先添加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'
])
}
答案 1 :(得分:4)
我知道这个答案迟到了,但对于其他人来说,我已经在不使用repository.flatDir的情况下进行了管理。 只需在依赖项部分
之后添加fileTree()extension MBRegisterTableViewController: CountryPickerViewDelegate {
func countryPickerView(_ countryPickerView: CountryPickerView, didSelectCountry country: Country) {
//Do something here with the selected country
}
}
答案 2 :(得分:3)
您可以将aar文件放在一个文件夹中。
您必须在repositories
块中定义此文件夹。当然你可以使用libs文件夹
类似的东西:
repositories {
mavenCentral()
flatDir {
dirs 'myAarFolder'
}
}
然后你可以在你的依赖中使用类似的东西:
dependencies {
compile(name:'nameOfYourAARFile', ext:'aar')
}
据我所知,没有办法将带有通配符的所有aars包含为*。