android捐助模块,Android 模块化/组件化

本文详细介绍了Android应用的模块化与组件化构建,包括ARouter的使用、依赖注入Dagger的配置、资源前缀配置以及不同构建模式下的manifest处理。通过这些技术,可以实现更高效、灵活的代码组织和管理。

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

问题

解耦

模块间的通信

基础核心模块的构建

业务组件化

代码边界

资源合并

配置

各个模块需要配置

javaCompileOptions {

annotationProcessorOptions {

arguments = [AROUTER_MODULE_NAME: project.getName()]

}

}

kapt {

generateStubs = true

arguments {

arg("AROUTER_MODULE_NAME", project.getName())

}

}

build.gradle dependies

compile 'com.alibaba:arouter-api:?'

annotationProcessor 'com.alibaba:arouter-compiler:?'

初始化

// Application中

ARouter.init(mApplication);

// Activity中

ARouter.getInstance().inject(this);

调用

Activity 类的头部添加

@Route(path = "/test/activity")

跳转目标

ARouter.getInstance().build("/test/activity") .withLong("key1", 666L).navigation();

Activity 接收参数

@Autowired(name="key1")public Long key;

配置

添加依赖

compile 'com.google.dagger:dagger:2.x'

annotationProcessor 'com.google.dagger:dagger-compiler:2.x'

@Conponent

注解修饰的接口或抽象类,负责在@Inject和@Module之间建立连接,当实例化@Inject注解的类时,遇到没有构造函数的成员变量依赖,则该依赖由@Module修饰的类提供

void inject(MainActivity MainActivity)

DaggerActivityComponent.builder().build().inject(this);

@Module

注解修饰的类负责提供那些没有构造函数的类的依赖,如第三方类库,系统类,接口类

方法 @Inject @Provide

@Inject

1.如果一个成员变量被@Inject注解修饰,并且它的类型构造函数也被@Inject注解修饰

2.若类的构造方法使用了该注解,则无需使用@Provide来提供初始化该类

@Provide 用在方法函数上,用于提供目标类的初始化

@Provide

public Context provideContext = Application.getInstance()

@Scope 类的作用域限定, 例如:

@AppScope App层级

@ActivityScope Activity层级

@FragmentScope Fragment层级

@Qulifier / @Name

别名,让目标类成员变量的类型 和 创建方法的返回类型 形成一对一的关系,一般来说,使用@Qulifier是比较标准的方式

@Named也可以达到相同的效果。还是用上面的例子,我们不需要重新定义两个注解@Local和@Remote,而是直接在需要加上别名的两个地方,添加@Named("Local")和@Named("Remote"),也就是将@Named后面括号中的字符串作为关联目标类型的成员变量和创建方法之间的别名

环境配置

模块配置

模块资源使用前缀 避免模块间的资源出现重复,配置资源前缀,

// module的build.gradle配置

resourcePrefix "module_"

manifest配置 release 和 debug

if(isBuildModule.toBoolean()){

manifest.srcFile 'src/main/debug/AndroidManifest.xml'

}else{

manifest.srcFile 'src/main/release/AndroidManifest.xml'

}

if (isBuildModule.toBoolean()){

apply plugin: 'com.android.application'

}

else{

apply plugin: 'com.android.library'

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值