美文网首页
Android 组件化

Android 组件化

作者: Summer_LJ | 来源:发表于2020-09-18 11:24 被阅读0次

    一、gradle配置,组件化第一步需要规范自己项目的gradle写法
    1.项目根目录创建config.gradle

    //添加自定义属性
    ext {
       //生产/开发环境  false组件化环境   true集成化开发环境
       isRelease = false
    
       url = [
             "release":"http://release",
             "debug":"http://debug"
       ]
    
       androidId = [
               compileSdkVersion:29,
               buildToolsVersion:"29.0.3",
               minSdkVersion:24,
               targetSdkVersion :29,
               versionCode :10,
               versionName :"1.1.0"
       ]
    
       appId = [
               "app":"com.hxdl.coco",
               "demo":"com.hxdl.coco.demo",
               "test":"com.hxdl.coco.test"
       ]
       dependencies  = [
                "appcompat": "androidx.appcompat:appcompat:1.1.0",
                "constraint": "androidx.constraintlayout:constraintlayout:1.1.3"
                "recyclerview": "androidx.recyclerview:recyclerview:1.1.0",
                "cardview":"androidx.cardview:cardview:1.0.0",
                "kotlin": "org.jetbrains.kotlin:kotlin-stdlib:1.3.61",
                 ...
       ]
    }
    

    2.引用config.gradle , 项目根gradle添加

    apply from: "config.gradle"
    

    为每个moudle gradle 配置引用config配置参数做统一化修改
    主Module

    def androidId = rootProject.ext.androidId
    def appId = rootProject.ext.appId
    def support = rootProject.ext.dependencies
     defaultConfig {
            applicationId appId.app
            minSdkVersion androidId.minSdkVersion
            targetSdkVersion androidId.targetSdkVersion
            versionCode androidId.versionCode
            versionName androidId.versionName
            ...
        }
    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'androidx.test.ext:junit:1.1.1'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    
        if(isRelease){
            implementation project(':demo')
            implementation project(':test')
        }
        support.each { k , v -> implementation v}
    }
    

    其他moudle

    if(isRelease){
       apply plugin: 'com.android.library'
    }else {
       apply plugin: 'com.android.application'
    }
    def androidId = rootProject.ext.androidId
    def appId = rootProject.ext.appId
    android {
        compileSdkVersion androidId.compileSdkVersion
        buildToolsVersion androidId.buildToolsVersion
        defaultConfig {
            if(!isRelease) {
                applicationId appId.demo
            }
            minSdkVersion androidId.minSdkVersion
            targetSdkVersion androidId.targetSdkVersion
            versionCode androidId.versionCode
            versionName androidId.versionName
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        }
        ...
    

    以上gradle配置 isRelease 为true 集成化环境 false 为组件化开发环境 每个module可以独立运行
    isRelase控制gradle的动态配置 是否是作依赖库还是作为直接可运行的Moudle
    support.each { k , v -> implementation v} 为grdle循环遍历语法 依赖config所配置的第三方依赖库
    三、Module之间的通信
    使用阿里的ARounter进行Mudle之间页面的跳转和通信https://www.jianshu.com/p/6021f3f61fa6
    这样组件化的模型就基本搭建完成

    相关文章

      网友评论

          本文标题:Android 组件化

          本文链接:https://www.haomeiwen.com/subject/bindyktx.html