Android组件化即ARouter的配置与使用(kotlin)

本文详细介绍了Android组件化的实现,包括统一版本管理、动态切换library和application、合并AndroidManifest.xml的技巧,以及组件间通信的各种方法,如Intent、EventBus和ARouter的使用。重点讲解了ARouter的导入、配置和具体调用示例,为Android开发者提供了一份实用的组件化实践教程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文章

https://juejin.cn/post/6844904147641171981
Demo查看

一. 统一版本管理

  1. 根目录下新建一个config.gradle
    ext {
        isApplication = true
        /**
         * app build
         */
        android = [
                applicationId    : "com.yiba.galleytest",	
                compileSdkVersion: 28,
                minSdkVersion    : 17,
                targetSdkVersion : 28,
                versionCode      : 1,
                versionName      : "1.0"
        ]
    
        /**
         * dependencies version
         */
        dependencies = [
                appcompat: "androidx.appcompat:appcompat:1.0.2",
                gson     : "2.8.5"
        ]
    }
    
  2. 在工程build.gradle中添加apply from:"config.gradle"
  3. 替换依赖
    implementation rootProject.ext.dependencies.appcompat
    或
    api "com.google.code.gson:gson:${config.dependencies.gson}"	//此处必须是双引号
    

二. 动态切换library和application

  1. 定义一个boolean值作为是否为library config.gradle中 (如以上代码中的isApplication)
  • 也可以定义在gradle.properties文件中isApplication=true使用则为isApplication.toBoolean()
  1. 需要替换的是applicationId 和顶部的apply from
    if (rootProject.ext.isApplication) {		//isApplication.toBoolean()
        apply plugin: 'com.android.application'
    } else {
        apply plugin: 'com.android.library'
    }
    

三. 合并AndroidManifest.xml

  1. 定义debug和release文件夹(java文件夹平级)放置不同的Manifest
  2. build中加入
    android标签下
    sourceSets {
        main {
            if (rootProject.ext.isApplication) {
                manifest.srcFile 'src/main/debug/AndroidManifest.xml'
            } else {
                manifest.srcFile 'src/main/release/AndroidManifest.xml'
                java {
                    exclude 'debug/**'	//移除debug文件夹下的资源,即 debug/AndroidManifest.xml
                }
            }
        }
    }
    

四. 其他合并的注意点

1. 合并Application的方法

  • module需要定义Application的时候, 在java文件夹下新建debug文件夹下定义Application, 在debug中的Manifest中注册

2. 资源冲突整合

  • 在module的build.gradle的defaultConfig标签下加上resourcePrefix "splash_", 即给资源名加前缀
  • 不要选择忽略前缀tools:ignore="ResourceName" ×!

五. 组件间的通信

  • 使用Intent传递
    需要在Manifest中设置activity的android:exported="true"
    val class : Class = Class.forName(包名.BActivity)
    val intent = Intent(AActivity.this, class)
    startActivity(intent)
    
  • 使用EventBus
  • 使用ARouter

六. ARouter的使用

1. 导入:

在每个module中导入依赖

apply plugin: 'kotlin-kapt'
kapt {
    arguments {
        arg("AROUTER_MODULE_NAME", project.getName())
    }
}
api 'com.alibaba:arouter-api:1.4.0'	//这个在library中导入即可
kapt 'com.alibaba:arouter-compiler:1.2.2'

2. 在Application中配置

if (BuildConfig.DEBUG) {
    // 日志开启
    ARouter.openLog()
    // 调试模式开启,如果在install run模式下运行,则必须开启调试模式
    ARouter.openDebug()
}
ARouter.init(this)
override fun onTerminate() {
    super.onTerminate()
    ARouter.getInstance().destroy()
}

3. 使用

  • 跳转页:

    ARouter.getInstance()
            .build("a/b")
            .withInt("i", i)    
            .navigation()
    
  • 目标页:

  1. 注入
    ARouter.getInstance().inject(this)	//写在BaseActivity中即可
    
  2. 题头加入注解
    @Route(path = "a/b")
    
  3. 获取传递来的数据
    @Autowired(name = "i")
    @JvmField	//必须加上,否则无法编译
    var i: Int = -1
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值