IAS2017- 讯飞输入法Android架构演进与实践.pptxVIP

IAS2017- 讯飞输入法Android架构演进与实践.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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私服 仓库地址 包名、版本号、进程、加载模式 依赖库列表(地址、版本) 开发模式(三种) 正在进行的工作 我们的路还很长 组件持续拆分 增加监控纬度 业务兼容处理 数据分析优化 结束 欢迎交流

文档评论(0)

喜宝 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档