一、定义

1、(projectDir)/build/intermediates/multi-dex/release/manifest_keep.txt
该文件存储了AndroidManifest.xml文件中定义的Activity、Receiver、Application、Service、Provider等组件信息。
这个操作是在任务collectStoreReleaseMultiDexComponents中执行的

2、(projectDir)/build/intermediates/multi-dex/release/componentClasses.jar
该文件存储了经过混淆优化后的类文件。
由任务transformClassesWithShrinkResForStoreRelease根据progurd规则和manfest_keep.txt文件进一步优化执行的,将其中没有用到的类删除。

注:不同版本的gradle的任务名称可能不同。shrinkRes任务执行时机可能也不同。笔者用的是gradle2.1.2,此任务是在生成dex文件之后进行的。

3、(projectDir)/build/intermediates/multi-dex/release/maindexlist.txt
该文件存储了哪些类需要放在第一个dex中。
任务transformClassesWithMultidexlistForStoreRelease会根据上一步生成的componentClasses.jar文件中的类,递归扫面这些类所有的依赖类,最终形成maindexlist.txt文件。

二、变更

1、自1.5.9-beta1版本开始,Gradle构建插件加入了Transform API,它允许第三方插件在将class文件转换成Dex文件过程之前来操作这些class文件。
2、这些API的目的就是可以简单的注入自定义class操作,而不需要处理相关的task,从而使操作过程更灵活
3、为了向构建过程插入一个transform,你只需要实现一个Transform接口,并使用

android.registerTransform(theTransform)

android.registerTransform(theTransform, dependencies)

方法注册它就可以了。
4、Dex 类已经没有了。你不能再通过variant(变体)API来访问它。
5、Transform只能被注册到全局,并且它会应用到所有的变体中。(稍后会改进)
6、目前还没有办法控制Transforms的顺序。

构建流程图

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. Android(安卓)Adapter详解
  4. Android(安卓)开发环境的构建备忘
  5. 在Android中创建启动界面
  6. android studio3.6.3编译Telegram android 1482 问题小记(nebula
  7. Android(安卓)HttpClient post MultipartEntity - Android(安卓)
  8. debug.keystore过期问题
  9. Android之常用文件路径

随机推荐

  1. php:1. 单文件上传与多文件上传 2. 简单
  2. 大家好,有朋自远方来,不亦说乎,请多关照哈
  3. 大家好啊,新手一枚,请多关照哈
  4. 字符串学习
  5. php分支与循环 、php与html混编学习
  6. 刚才看到一个P身份證的楼主P出来假的不得
  7. 单文件上传与多文件上传,简单分页操作的
  8. 属性和方法重载及命名空间与类自动加载器
  9. 实例演示字符串函数
  10. MySQL主从复制配置