android组件化
来源:互联网 发布:python做性能测试 编辑:程序博客网 时间:2024/06/02 00:19
关于为毛要组件化就不多解释了。
组件化首先就要想到要有一个application,多个模块moudle,一个用来依赖的moudule:
这个app依赖moudleA和moudleB,然后moudleA和moudleB分别依赖moduleLib。
因为要整体APP可以运行,模块之间又可以单独运行,那么就要有全局的字段来标记是拆分还是合并。那么就需要定义一个全局的标识字段:所以在gradle.properties里面定义isDebug
这个时候因为可以拆分运行,就需要有不同的manifest:
通过isDebug字段区分使用manifest
sourceSets { main { if (isDebug.toBoolean()) { manifest.srcFile 'src/main/debug/AndroidManifest.xml' } else { manifest.srcFile 'src/main/release/AndroidManifest.xml' } } }**区分运行拆分和合并:(区分编译成APP还是lib)**if(isDebug.toBoolean()){ apply plugin: 'com.android.application'}else{ apply plugin: 'com.android.library'}
关于APP的依赖,也要修改
if (!isDebug.toBoolean()) { compile project(':moduleA') compile project(':moduleB') } else { compile project(':moduleLib') }
记得修改isDebug字段需要同步gradle。
这个时候只要修改isDebug字段就可以搞定拆分和合并运行的操作。这个时候会遇到一些问题:
- module各自的资源文件同名
可以通过gradle改写:resourcePrefix “moduleA_”。 - 关于application强制转换报错
尽量不要使用(MOUMOUAplication)getApplication。不要在application里面写实现方法。 - 关于activity的跳转
现在有三方的跳转库,不是很推荐,因为都还不太完善。可以通过定义包名直接跳转,稍微大点的数据传递推荐使用eventbus。
Intent intent = new Intent(); Class clazz = Class.forName("com.diya.moduleb.ActivityModuleB"); intent.setClass(ActivityModuleA.this, clazz); startActivity(intent);
- 关于举例:
这里有一个我自己写的简单的测试demo,不要在意写的垃圾这个细节,毕竟只是个demo:
https://github.com/Diya-Wang/ModuleDemo - 关于组件化:
个人认为虽然代码模块化后开发中增加了复杂度,但是对于模块的拆分管理和使用毕竟是比较方便。对于大的项目有着很好的支持作用。个人认为,如果你只是一个简单的小项目,没有必要搞这么复杂,只需要简单的拆分功能模块就可以。但是组件化还是要有自己的理解。
组件化对于大型APP有着不用解释的作用。现在很多大型企业搞着各种组件化的开发,时代在进步。。。所以:如果你的APP够大,如果你的APP还各种柔和在一起。赶紧开始第一步,慢慢的拆分功能模块吧,等你用个一年半年时间拆分出各种功能模块,那时候搞成完美的组件化开发,也是分分钟的事儿啊。
0 0
- android组件化
- Android组件化实战
- Android 组件化开发
- Android 组件化案例
- android项目组件化
- android组件化思考
- Android组件化方案
- android 组件化开发
- Android 组件化
- Android组件化项目
- android组件化方案
- Android组件化方案
- Android组件化实践
- Android 组件化
- Android组件化开发
- Android组件化
- Android 组件化 构架
- Android 组件化
- MAC-终端命令大全
- Thrift学习笔记(3)--Thrift 多线程阻塞式IO服务模型
- 在机器学习领域,怎样写好一篇学术论文
- CSS兼容性
- win7 下搭建redmine-3.3.1-0项目管理系统
- android组件化
- 标签参数JEECG智能开发平台 UI标签库帮助文档
- Visio生成eps文件的方法
- [Latex] Beamer with Overlay
- eclipse下搭建SSH整合环境(Struts2+Spring+Hibernate+maven)
- 简单的实现在有名管道里,进程间的通信(非阻塞)。
- 图像识别中的深度学习
- eclipse working setting
- 数组排序