1、通过创建versions.gradle来统一管理各模块依赖库。
/** * Shared file between builds so that they can all use the same dependencies and * maven repositories. **/ ext.deps = [:] def versions = [:] versions.android_gradle_plugin = "3.0.1" versions.kotlin = "1.1.51" versions.support = "27.0.2" versions.multidex = "1.0.2" versions.constraint_layout = "1.0.2" versions.dagger = "2.11" versions.glide = "3.8.0" versions.rxjava2 = "2.1.7" versions.rx_android = "2.0.1" versions.retrofit = "2.3.0" versions.event_bus = "3.1.1" versions.photo_view = "2.0.0" versions.persistent_cookie = "v1.0.1" versions.gson = "2.8.2" versions.qmui = "1.0.4" versions.flow_layout = "1.0.3" versions.swipe_recycler = "1.1.3" versions.easy_recycler = "4.4.2" versions.permission = "1.1.2" versions.utils = "1.10.0" versions.top_snackbar = "1.1.1" versions.litepal = "1.6.1" versions.toasty = "1.1.3" versions.logger = "1.15" versions.material_dialog = "0.9.6.0" //Arouter versions.arouter_compiler = "1.1.4" versions.arouter_api = "1.3.1" def deps = [:] def support = [:] support.annotations = "com.android.support:support-annotations:$versions.support" support.app_compat = "com.android.support:appcompat-v7:$versions.support" support.v13 = "com.android.support:support-v13:$versions.support" support.percent = "com.android.support:percent:$versions.support" support.recyclerview = "com.android.support:recyclerview-v7:$versions.support" support.cardview = "com.android.support:cardview-v7:$versions.support" support.design = "com.android.support:design:$versions.support" support.v4 = "com.android.support:support-v4:$versions.support" support.core_utils = "com.android.support:support-core-utils:$versions.support" support.multidex = "com.android.support:multidex:$versions.multidex" deps.support = support def retrofit = [:] retrofit.runtime = "com.squareup.retrofit2:retrofit:$versions.retrofit" retrofit.adapter = "com.squareup.retrofit2:adapter-rxjava2:$versions.retrofi" retrofit.gson = "com.squareup.retrofit2:converter-gson:$versions.retrofit" deps.retrofit = retrofit //room def room = [:] room.runtime = "android.arch.persistence.room:runtime:1.0.0" room.compiler = "android.arch.persistence.room:compiler:1.0.0" room.rxjava2 = 'android.arch.persistence.room:rxjava2:1.0.0' deps.room = room //网络爬虫 deps.jsoup = 'org.jsoup:jsoup:1.7.3' //城市索引含定位和热门城市 deps.indexablerecyclerview = 'me.yokeyword:indexablerecyclerview:1.3.0' //拼音 deps.pinyin4j = 'com.belerweb:pinyin4j:2.5.0' //easyrecyclerview deps.easyrecyclerview = 'com.jude:easyrecyclerview:4.4.2' //CircleImageView deps.circleimageview = 'de.hdodenhof:circleimageview:2.2.0' // 1.5.9 is the main,下拉刷新和上拉加载更多 deps.xrecyclerview = 'com.jcodecraeer:xrecyclerview:1.5.9' deps.fastjson = 'com.alibaba:fastjson:1.1.68.android' deps.butterknife = 'com.jakewharton:butterknife:8.7.0' deps.okhttputils = 'com.zhy:okhttputils:2.6.2' //rxjava deps.rxandroid = "io.reactivex.rxjava2:rxandroid:2.0.1" deps.rxjava = "io.reactivex.rxjava2:rxjava:2.0.7" ext.deps = deps
2、在项目下的build.gradle中添加 apply from:“versions.gradle”
buildscript { apply from: 'versions.gradle' addRepos(repositories) dependencies { classpath 'com.android.tools.build:gradle:3.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { addRepos(repositories) // Android dependency 'com.android.support:design' has different version for the compile (25.3.1) and runtime (25.4.0) classpath. // You should manually set the same version via DependencyResolution subprojects { project.configurations.all { resolutionStrategy.eachDependency { details -> if (details.requested.group == 'com.android.support' && !details.requested.name.contains('multidex')) { details.useVersion "27.0.2" } } } }
3、创建一个公共的lib_common库来集成公共的依赖,供其他各模块统一调用。
dependencies { api fileTree(dir: 'libs', include: ['*.jar']) // Support libraries api deps.support.app_compat api deps.support.recyclerview api deps.support.v4 //rxjava api deps.rxandroid api deps.rxjava //room api deps.room.runtime annotationProcessor deps.room.compiler api deps.room.rxjava2 }
4、通过在gradle.properties来设置变量,isModule = true/false来控制模块是作为一个独立的组建存在还是作为一个library存在。具体操作在对应模块的build.gradle中设置
if (isModule.toBoolean()) { apply plugin: 'com.android.application' } else { apply plugin: 'com.android.library' }
5、在主application中控制是否集成各模块组建
if (!isModule.toBoolean()) { implementation project(':module_main') implementation project(':module_girls') implementation project(':module_news') }
6、在各模块的文件目录下创建module文件目录(自定义文件目录),添加单独的AndroidManifest.xml文件。
7、在对应模块的build.gradle的android{}中控制加载对应的清单配置文件
sourceSets { main { if (isModule.toBoolean()) { manifest.srcFile 'src/main/module/AndroidManifest.xml' } else { manifest.srcFile 'src/main/AndroidManifest.xml' //集成开发模式下排除debug文件夹中的所有Java文件 java { exclude 'debug/**' } } } }
8、建议学习gradle相知识和语法