- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
讯飞输入法Android架构演进与实践
程坤
科大讯飞
大纲
Part1
Part2
架构演进历程
组件化架构实践
Part1
架构演进历程
架构演进概览
架构如何演进
匹配
平衡
时间
成本
可靠性
扩展性
安全性
……
产品初期
2010.10 发布会
2010.7 启动
时间紧,从无到有只有三个多月
无参考,很多功能都是首创
人员少,客户端开发仅有2人
挑战:
简单MVC
关注点
快
稳定
经验
尽量复用
产品快速发展前期
业务
团队
补齐功能
优化效果
开发4人
扁平化组织
各写自己的代码
代码重用性差
新功能开发成本高
维护起来困难
问题
分层架构
关注点
开发效率
提供复用
经验
梳理和优化
封装和推广
架构组
产品快速发展中期
业务组
功能越加越多
代码越来越复杂
团队规模:10人
产品迭代
形成制约:
性能和稳定性
团队结构调整
多进程架构
关注点
即用即走
隔离
轻量
经验
摒弃单例
简化调用
产品快速发展后期
团队:20+人
业务1
业务2
架构1
……
业务:
业务分工更细
不断进行新尝试
快速市场验证
架构上支持更快的产品迭代
组件化架构
关注点
并行开发
动态更新
经验
坑多慎入
Part2
组件化架构实践
为什么要重复造轮
Atlas/ACDD
DynamicLoadApk
DynamicApk
VirtualAPK
Replugin
Small
较早
较新
输入法业务有其独特性
填坑之路
兼容性
启动性能
多进程
组件更新
工程结构
……
兼容性
ActivityThread
Instrumentation
Resources
ContextImpl
减少Hook点
参考Replugin(进行中)
启动性能
Read Config File
Unzip Copy
DexOpt
问题:
键盘启动变慢
空间不足导致崩溃
启动时I/O
BundleInfos.class
x.apk
classes.dex
lib/x.so
DexFile
load
compile
compile
armeabi/x.so
Manifest
install
多进程
像用本地能力一样使用跨进程的能力
接口转换、进程拉起、重连和状态恢复
保证各组件能力能正常运行
组件自适应选择运行进程
进程A
进程B
组件A
组件B
RemoteException
封装
多进程
进程A
进程B
服务总线数据总线
组件A
组件B
组件C
组件框架
组件框架
进程调度
publishService
getService
getService
ContentProvider
+Service
LocalSocket
组件更新
输入法apk
组件Aˊ
组件A
宿主
API
…
…
版本比较:
Aˊ版本大于A版本
API版本相等
宿主版本相等
发布平台(构建、测试、发布)
组件版本
API版本
宿主版本
推送
升级
组件更新
启动闪退
组件回退
清除升级组件
清除配置文件
组件升级
连续崩溃3次
连续崩溃3次
连续崩溃3次
功能回退,影响较大
单功能回退,无感知
回到初始安装状态,所有记录和习惯都丢失,影响很大
工程结构
App
Bundle.app
Bundle.B
Lib.api
Lib.X
Bundle.A
Lib.figi
……
……
壳工程
业务组件
基础库
工程结构
App Project
app
build.gradle
config.gradle
settings.gradle
特点:
无任何代码,仅有脚本及配置文件
仅有唯一分支,一般不做修改
仅集成打包、集成调试时使用
不使用repo、git submodule
组件/库列表:
仓库地址
本地路径(可缺省)
版本号
集成模式(三种)
gradle plugin
工程结构
Bundle Project
app
bundle.X
mock
build.gradle
config.gradle
settings.gradle
特点:
可独立编译调试
打包产物有:测试apk、组件apk和aar
产物上传到Nexus私服
仓库地址
包名、版本号、进程、加载模式
依赖库列表(地址、版本)
开发模式(三种)
正在进行的工作
我们的路还很长
组件持续拆分
增加监控纬度
业务兼容处理
数据分析优化
结束
欢迎交流
您可能关注的文档
- IAS2017- 58速运智能派单系统的架构演进.ppt
- IAS2017- Cloud Native架构一致性问题及解决方案.pptx
- IAS2017- DevOps监控平台实践.pptx
- IAS2017- TensorFlow下的构建高性能神经网络模型的最佳实践.pptx
- IAS2017- 大数据平台架构设计.pdf
- IAS2017- 大型支付交易平台的演进历程.pdf
- IAS2017- 饿了么交易系统应用架构演进.pptx
- IAS2017- 韩玮-爱游戏SDK业务技术栈演进(Android).pdf
- IAS2017- 黄勇-轻量级微服务架构实践之路.pdf
- IAS2017- 机器学习平台的架构设计.pptx
文档评论(0)