Android Studio包含目录中的所有aar文件

Ale*_*hyn 5 android gradle android-gradle-plugin

我正在为一个框架编写一个构建系统,可以通过用户(开发人员)的插件进行扩展.我的问题是我不能用掩码包含所有的aar文件.例如,我可以包含所有这样的jar文件:

compile fileTree(dir: 'libs', include: '*.jar')
Run Code Online (Sandbox Code Playgroud)

但如果我包含所有这样的aar文件:

compile fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

Only Jar-type local dependencies are supported. Cannot handle: /path/to/file.aar
Run Code Online (Sandbox Code Playgroud)

但是,可以单独包含每个文件,如下所示:

compile (name:'myfile', ext:'aar')
Run Code Online (Sandbox Code Playgroud)

作为一种解决方法,在构建期间,我将需要列出'libs'目录中的文件,手动将所有库插入我的build.gradle并保持同步(或每次重写).这是一种做法的hackish方式,因此我想知道是否有更好的方法.也许有一个gradle脚本可以自动执行或者一些gradle beta支持这个:

compile fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
Run Code Online (Sandbox Code Playgroud)

mix*_*xel 17

首先添加flatDir存储库:

repositories {
    flatDir {
        dirs 'libs'
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在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'
    ])
}
Run Code Online (Sandbox Code Playgroud)