细说移动开发历程
组件化开发
组件路由
组件配置动态加载
组件骨架架构
插件化开发
静态插件化
动态插件化
细节雕琢
网络层的优化和架构
动态埋点的实现
技术层架构(MVP,MVVM等模式)
后续按照大技术块各个技术点深入浅出的分享出来,请订阅关注。
本文阅读需要8分钟。
你可能的收获:
理解整个公司移动开发的基线和主线
学会移动开发组开发过程碰到问题和解决方案
学会移动开发过程各个技术的细枝末叶
希望能给读者开发项目有点启发和思索我理解的技术开发人员,除了业务和技术的热爱,其同时也需具备独立思考的能力。1.成长期
2.混沌期
3.统一期
4.分化期
成长期一般在公司的第1~2年;
混沌期一般在公司的第2~3年;
统一和分化期在公司第3年以后;其中统一和分化期有可能多次迭代进行。
此时开发技术选型都是以个人因素为走向,因此前期项目选型和架构都是个人技术喜爱占主导,自己熟悉的技术和框架才是最快最有效的,可以快速追赶上线进度。譬如喜欢rxjava,喜欢mvp模式很快就会在这个项目就起主导方案和技术架构。甚至有些开发同仁直接从网上所谓架构好的现成项目开干怼。此时段公司的唯一宗旨就是首战市场产出产品,快速迭代占据每个开发人员的脑海中,细节等一切可以忽略,要啥自行车。
1、Bug的可视化实时监控和统计;
2、引用内存未释放导致crash的bug;
3、内存泄漏导致crash的bug;
4、进入市场机型问题引起的bug;
5、网络访问慢的反馈;
6、奇葩未知的bug;
7、。。。问题2的思考,引入Eventbus解决回调地狱问题和回调引起泄漏未释放问题;
问题5的思考,略;
关于公司指定的线上bug指标,是否完成也是需要多版本迭代现网运行后才能统计;既然是现网bug就有轻重之分,如果重大bug一般立即发布新版本更新,轻微的bug放到下一个版本迭代修复,那有没有现网bug热修复方案,肯定有的,成熟的有tinker等第三方库;

图(一)
图(二)
1. 模块间的调用进行解耦合实现模块热拔式方案
2. 是时候加上代码权限管理
3. 模块打包AAR实现模块间引入
4. 解决编译速度慢问题
5. 自动化打包问题
6. 。。。。
sourceSets {
main {
jniLibs.srcDirs = ['libs']
if ("true".equals(FINANCE_IS_APPLICATION)) {
manifest.srcFile 'src/main/diff/appmodule/AndroidManifest.xml'
java.srcDirs = ['src/main/java', 'src/main/diff/appmodule/java']
res.srcDirs = ['src/main/res', 'src/main/diff/appmodule/res']
assets.srcDirs = ['src/main/assets', 'src/main/diff/appmodule/assets']
} else {
manifest.srcFile 'src/main/diff/libmodule/AndroidManifest.xml'
java.srcDirs = ['src/main/java', 'src/main/diff/libmodule/java']
res.srcDirs = ['src/main/res', 'src/main/diff/libmodule/res']
assets.srcDirs = ['src/main/assets', 'src/main/diff/libmodule/assets']
}
}
}
一般自动化服务可以通过搭建jenkins服务,或者配合python脚本实现自动化打包功能,其脚本的功能因公司而异。

图(三)
慢慢发现,组件化架构无声无息的出现了,是不是很神奇。回过头发现组件化架构已经进行了一小部分,信心十足,继续干,此时必须祭出毛爷爷的红本子,大声的朗读出来,我爱编程,皮肤好好!!
1、项目升级降级功能;
2、第三方库的引用和初始化工作;
3、实现子模块加载和引入以及初始化工作;
4、周边服务或插件的引入和初始化工作;例如Tinker和bugly等
5、。。。

图(四)

图(五)
1. 全局配置文件的分离,实现配置文件根据子模块业务走,例如网络地址的配置和网络请求地址的分离;
2. 业务配置文件的分离,配合服务端一起实现模块化分离;
3. 各个子模块的公共业务动态加载块;
4. 耦合代码的分离和重构;
5. 。。。1、例如上面提到的bug中出现网络性能慢,这个就可以深入挖掘各个实现,例如腾讯就这个小点实现了Mars开源框架;
2、业务UI框架的封装(减少重复开发以及性能问题);
3、性能监控;
4、配置管理中心;
5、动态埋点;
6、各个业务核心点的优化;
7、编写的组件化的重构和优化;
8、技术层架构(MVP,MVVM等模式)
9、分布式架构;
10、。。。。
以上过程其实是一个分久必合合久必分的过程。当项目走向做到极致的时候还是没法应付庞大用户群和业务群,请转行养猪。。。
插件化路由实现,源码详见,觉得好请点击star:我的路由