android组件化的学习

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相知识和语法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值