0%

Android-组件化简单使用

一 创建Module

  1. 主Module app 地图Module map 相机Module camera,基础Module commonlib
    image.png

二. 添加全局控制文件
image.png

1
2
3
ext {
isAlone = false;//false:作为Lib组件存在,true:作为application存在
}

build.gradle 添加饮用
image.png

三. 配置Module 的gradle文件

  1. 是否是组建形式
    1
    2
    3
    4
    5
    6
    //控制组件模式和集成模式
    if (rootProject.ext.isAlone) {
    apply plugin: 'com.android.application'
    } else {
    apply plugin: 'com.android.library'
    }
    1
    2
    3
    4
    if (rootProject.ext.isAlone) {
    //组件模式下设置applicationId
    applicationId "com.example.camera"
    }
    //是否设置独立module模块
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        sourceSets {
    main {
    if (rootProject.ext.isAlone) {
    manifest.srcFile 'src/main/module/AndroidManifest.xml'
    java.srcDirs = ['src/main/java', 'src/main/module/java']
    res.srcDirs = ['src/main/res', 'src/main/module/res']
    } else {
    manifest.srcFile 'src/main/AndroidManifest.xml'
    }
    // jniLibs.srcDirs = ['libs']
    }
    }

最后应用commonlib

1
implementation project(':commonlib')

四. 集成关系

  1. camera,map 都需要继承 commonlib
  2. app
    1
    2
    3
    4
    5
    implementation project(':commonlib')
    if (!rootProject.ext.isAlone) {
    implementation project(':camera')
    implementation project(':map')
    }

说明:
1.commonlib中 不要使用implementation ,要用compile,具体区别百度下

1
2
3
4
 //这个失败
implementation 'com.android.support:design:26.1.0'
//这个可以
compile 'com.android.support:design:26.1.0'
  1. multiDexEnabled 一定要放在app module模块下,不能放在commonlib中
  2. 遇到莫名其妙问题可以尝试打开或关闭instant run

详细的可以下载demo跑一下 很简单 https://git.coding.net/Lrxc/LrxcModularization.git
大神文章:https://mp.weixin.qq.com/s/4dc38cpZKCfxWxxRdUQfTQ