组件化学习(一) 工程配置

组件化

  1. 组件化的运行时期是在apk的编译时期 (重点)
  2. 组件化需要解决的问题?
  3. 组件化gradle配置

一 组件化需要解决的问题

     1. 资源冲突问题 

          比如两个Module中都有名字叫做 name 的string资源。打包时就会产生冲突

          解决办法 :在每个模块的build.gradle 文件的android Task中 声明resourcePrefix 这个属性

android {

    resourcePrefix "user_"

}

          这个的作用是  约束  你的res资源文件的前缀必须为 user_

     2. 组件间通信问题  (这里采用阿里的Arouter 都可以实现)

          这里的通信指的是 组件间跳转  和  组件间获取class对象 的问题

          

       3.gradle 配置

二 组件化gradle配置

     前提准备 - - 工程目录

       

壳工程app
modulevideocomponet

 1. 新建Project下config.gradle 这个文件相当于全局的配置文件 里面就是统一的属性啥的

ext {


    isModule = true;//配置是否是application 还是 library 模式

    compileSdkVersion = 29
    buildToolsVersion =  "29.0.3"

    minSdkVersion =  15
    targetSdkVersion =  29
    versionCode =  1
    versionName = "1.0"

    dependencies = [
            "appcompat" : 'androidx.appcompat:appcompat:1.0.2',
            "constraintlayout" : 'androidx.constraintlayout:constraintlayout:1.1.3',
            "okhttp" : 'com.squareup.okhttp3:okhttp:3.14.2'
    ]
}

2. 配置app下的build.gradle文件 

            1. def cof = rootProject.ext    引入config.gradle 文件 ,相当于c++的include

            2. 判断是否是module模式 如果是module模式的话 依赖videocomponet这个模块

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation cof.dependencies.appcompat
    implementation cof.dependencies.constraintlayout
    implementation cof.dependencies.okhttp


    if (isModule) {
        implementation project(':videocomponet')
    }

    annotationProcessor project(':ZHRouter_compiler')
    implementation project(':ZHRouter_annotation')
    implementation project(':XHRouter_core')
}

 3.配置videocomponet这个模块的build.gradle 文件

def cof = rootProject.ext  // 引入config.gradle 文件 ,相当于c++的include
// 判断是否是module  是的话 library 不是的话作为一个单独的apk工程
if (isModule) {
    apply plugin: 'com.android.library'
} else {
    apply plugin: 'com.android.application'
}

 4.配置videocomponet的 java文件  和  Manifast文件

     

android 结构下 

sourceSets {
        main {
            if (isModule) {
                manifest.srcFile 'src/main/AndroidManifest.xml'
            } else {
                java.srcDirs('src/main/java','src/main/module')
                manifest.srcFile 'src/main/module/AndroidManifest.xml'
            }
        }
    }

  如果是module的话就是正常的java路径 和 Manifast路径,如果是作为单独的一个apk的话 就要重新指定一个AndroidManifest文件。

5.module的目录结构

   


到这里组件化gradle配置完成

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值