软件研发中,耗费最多的并不是编写代码,而是代码编译和代码不断调试的过程。对于我们Android来说,随着项目的不断迭代,以及业务模块的不断增加,项目技术栈的增加,项目编译会越来越慢。随着业务的扩展,相信很多的公司都已经做了模块化/组件化。

背景

创建一个 Project 后可以创建多个 Module,这个 Module 就是所谓的模块。一个简单的例子,可能在写代码的时候我们会把首页、消息、我的模块拆开,每个 tab 所包含的内容就是一个模块,这样可以减少 module 的代码量,但是每个模块之间的肯定是有页面的跳转,数据传递等,比如 A 模块需要 B 模块的数据,于是我们会在 A 模块的 gradle 文件内通过 implementation project(':B')依赖 B 模块,但是 B 模块又需要跳转到 A 模块的某个页面,于是 B 模块又依赖了 A 模块。这样的开发模式依然没有解耦,改一个bug依然会改动很多模块,并不能解决大型项目的问题。于是就有了组件的概念,我们日常业务需求开发的组件叫做业务组件,如果这个业务需求是可以被普遍复用的,那么叫做业务基础组件,譬如图片加载、网络请求等框架组件我们称为基础组件。于是一个典型的组件化架构通常如下图所示。

实线表示直接依赖关系,虚线表示间接依赖。比如壳工程肯定是要依赖业务基础组件、业务组件、module_common公共库的。业务组件依赖业务基础组件,但并不是直接依赖,而是通过”下沉接口“来实现间接调用。业务组件之间的依赖也是间

Android 编译优化相关推荐

  1. Android编译优化系列-kapt篇

    一.背景 本文是编译优化系列文章之 kapt 优化篇,后续还会有 build cache, kotlin, dex 优化等文章,敬请期待.本文由Client Infra->Build Infra ...

  2. Android 编译优化探索

    前言 在mac较为高配的情况增量编译TIYA项目需要2分钟30s左右,这严重影响开发效率.在常规优化手段使用完后只能堆砌硬件进行提升效率是及其不可取,于是和一位同事决心做一次优化. 以下是benchm ...

  3. 【Android 内存优化】libjpeg-turbo 函数库交叉编译 ( libjpeg-turbo 函数库下载 | libjpeg-turbo 编译文档 | 环境准备 | NASM 安装 )

    文章目录 一. libjpeg-turbo 函数库下载与解压 二. libjpeg-turbo 编译文档 三. 编译前环境准备 四. 安装 NASM 汇编工具 1. 下载 NASM 汇编工具 2. 拷 ...

  4. Android高手笔记-D8, R8编译优化

    在之前的文章Android高手笔记-包体积优化中提到过通过编译优化包体积,涉及到了ProGuard,D8,R8,其中关于ProGuard及包体积优化方案已经进行了详细介绍,那么今天我们来说说D8和R8 ...

  5. Android系统编译优化:使用Ninja加快编译

    背景 环境 关键编译阶段和耗时分析 阶段一:Soong bootstrap 阶段二:Kati遍历.mk搜集与ninja生成 阶段三:Ninja编译 编译优化 对比汇总 背景 Android系统模块代码 ...

  6. 美图Android编译速度优化实践指南

    分享嘉宾:张仙华 美图 资深开发工程师 分享嘉宾:张仙华,美图秀秀android团队资深研发工程师,负责编译加速.性能优化.架构设计等公共基础相关工作 导读:本文的主题是美图秀秀的Android编译速 ...

  7. android 优化编译,Android-Easy-Compile(安卓编译优化系统)

    Android-Easy-Compile安卓编译优化系统,软件免费开源,通过应用编译优化安卓系统,借助PC端的ADB对安卓7以及以上版本的安卓智能手机执行全局编译,加快APP运行速度. Android ...

  8. ANDROID内存优化(大汇总——中)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...

  9. Android性能优化之运算篇

    原文转自 Techfox IT技术论坛 运算篇 1) Intro to Compute and Memory Problems Android中的Java代码会需要经过编译优化再执行的过程.代码的不同 ...

最新文章

  1. Jzoj4747 被粉碎的线段树
  2. 3名程序员被抓!开发“万能钥匙”APP,撬走3个亿
  3. 0x53. 动态规划 - 区间DP(习题详解 × 8)
  4. Apriori算法进行关联分析实战
  5. virtualbox centos5 分辨率_一种高分辨率、高帧率的LCoS显示芯片设计方法
  6. 声明式事务控制的配置要点
  7. Java基础查漏补缺:(String篇)一个面试题问倒了我,原来String并不简单
  8. mysql找不到sys_解决方法:①MySQL 闪退 ②服务列表里找不到MySQL ③MySQL服务无法启动...
  9. centos 7 重设密码总是失败
  10. python之爬取中华诗词网
  11. Latex表格内容自动换行
  12. 网站建设的费用一般与功能要求是成正比的
  13. 浅谈数学在计算机科学中的应用,浅谈计算机科学技术在数学思想中的应用(原稿)...
  14. 微信支付和支付宝支付整合(含设计模式1)
  15. NAT模式、路由模式、桥接模式 区别对比
  16. 2016锐捷网络云课堂云网络研讨会福州闭幕 根植教育彰显“变革之力”
  17. ps蒙版工具的概念及使用
  18. 2016太原网络营销师揭秘面试题百度竞价(SEM)中百度网盟推广的理解?
  19. 292、Java中级09 - 【Lambda表达式】 2020.02.29
  20. git push 之后如何不用回滚或者abandoned方式等修改已提交代码呢?

热门文章

  1. 特征点检测效果评估(matlab代码)
  2. 手机加密聊天软件的实现(基于android系统)
  3. 用python画微笑脸表情_python画表情包
  4. 计算机应用软件用着总是闪退是什么原因
  5. 精选“数据分析”好问题汇总·第一期
  6. 输入快递单号查询不到物流怎么办
  7. 宜立方商城第二天心得
  8. 【课程汇总】OpenHarmony 成长计划知识赋能第三期系列课程(附链接)
  9. 手机成移动互联网入口必争之地
  10. svg 地图_一秒带你制作出全国各省市区县地图