美文网首页
Android 组件化开发的准备和坑点

Android 组件化开发的准备和坑点

作者: 大川的川 | 来源:发表于2021-03-10 16:18 被阅读0次

    准备----

    1. 新建项目不多说了,在项目中添加Module模块,我们可以选择“Phone & Tablet Module”,这样创建出来的模块可以直接单独运行。
    2. 创建好自己的模块后,新加一个gradle.properties,用于记录当前模块的运行模式(library或application) gradle.properties内容如下:
    isRunAlone=false
    
    3. 在模块中复制出一份AndroidManifest.xml到manifest文件夹中(参考图一),并将main目录下的AndroidManifest.xml修改成组件集成运行时需要的内容(参考图二):
    图一
    图二
    4. 在新建模块的build.gradle中配置,根据gradle.properties设置的isRunAlone=false(名字随意)的值进行判断, isRunAlone.toBoolean()字符串转boolean,true为单独运行,false是组件化运行,
    if (isRunAlone.toBoolean()) {// isRunAlone.toBoolean()字符串转boolean,true为组件单独运行,false是组件化集成运行
        apply plugin: 'com.android.application'
    } else {
        apply plugin: 'com.android.library'
    }
    android {
        compileSdkVersion 30
        buildToolsVersion "29.0.3"
        defaultConfig {
            // 组件单独运行时需要的applicationId
            if (isRunAlone.toBoolean()) {
                applicationId "com.mm.testmodule"
            }
            minSdkVersion 16
            targetSdkVersion 30
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
            // 配置组件单独运行和组件一起集成运行时需要的AndroidManifest.xml
            sourceSets {
                main {
                    if (isRunAlone.toBoolean()) {
                        manifest.srcFile 'src/main/manifest/AndroidManifest.xml'
                    } else {
                        manifest.srcFile 'src/main/AndroidManifest.xml'
                    }
                }
            }
            // ARouter路由的配置
            javaCompileOptions {
                annotationProcessorOptions {
                    arguments = [AROUTER_MODULE_NAME: project.getName()]
                }
            }
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    5. 在APP下的build.gradle中依赖刚刚新建的组件,这里需要注意一下,我们组件开发的目的就是为了解耦,如果用implementation project(path:':testmodule')依赖的方式太直接,所以,我们要使用runtimeOnly project(path:':testmodule'),再用ARouter路由去跳转页面!
    到此,基本的组件化就成型了,我们可以根据gradle.properties设置的isRunAlone=false的值,组件化运行也好,组件单独运行也成!

    坑点:

    1、主APP模块和其他组件中的界面,布局XML和资源文件的命名一定要有规则,尽量不要使用相同的命名,否则会出现意想不到的画面
    2、在组件间的页面转场需要在app的build中依赖各个组件,还是建议使用runtimeOnly project(path:':testmodule'),并且使用ARouter路由跳转,这样比较好的解耦了各个组件关联性。
    - implementation 不对外开放,只是本项目依赖.
    - runtimeOnly 运行时才依赖
    3、如果使用ARouter在组件间转场时发生“There’s no route matched” 这个错误时,我们不要慌,首先确保,每个组件和主APP下的build.gradle中,都配置和依赖的ARouter,其次再去找,是不是我们没有在app下的build中进行各组件的依赖导致的。

    相关文章

      网友评论

          本文标题:Android 组件化开发的准备和坑点

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