在开发过程中,随着项目的逐渐完善,把项目分成不同的module更便于维护。因而就产生了主项目引用module,module引用module的问题。有的module是某个平台专用的,其他平台不需要的。还有的是根据cpu平台需要引入不同module的。我的项目就出现了这样的问题,我相信对gradle非常了解的人应该都可以解决这个问题,然而像我这种就需要各种查资料才能解决。最近有朋友也问我关于项目module引用问题,我觉得有必要写一篇文章分享一下我的方案。
借用一下极客学院wiki:http://wiki.jikexueyuan.com/project/android-gradle-guide/libraries-and-multi-project-setup.html
我也是看了这篇文章才摸索出解决问题的方法。建议先看我的这篇文章,再去看上边的这篇。(另外推荐一下极客学院wiki,相当不错)
项目结构(部分):
主项目的gradle配置
android { .... productFlavors { armv7 { ndk { abiFilters "armeabi-v7a" } } x86 { ndk { abiFilters "x86" } } } } .... dependencies { .... armv7Compile project(path: ':moduleA', configuration: 'armv7Release') x86Compile project(path: ':moduleA', configuration: 'x86Release') }
moduleA的gradle配置
android { .... productFlavors { armv7 {} x86 {} } } ..... dependencies { .... armv7Compile project(':moduleB1-arm') x86Compile project(':moduleB2-x86') }
仔细看这上边的两个gradle,最重要的就是:
1,首先要配置productFlavors,如上文中的armv7 和x86(其他的flavor根据自己需要配置)
2,然后在dependencies里边添加:
使用Flavors的名称做前缀加上Compile,上文中的是armv7Compile 和x86Compile (其他的flavor根据自己需要配置,比如xiaomiCompile等)
project单个flavor传一个参数(’:项目名称’)
project有多个flavor的需要传两个参数(path: ‘:项目名称’, configuration: ‘flavor名称+Release’)