前介
APK
瘦身是很多公司忽略的问题,因为现在网速快速发展以及流量的降费,这个问题也越来越被忽略。但是大项目还是很在意瘦身的,支付宝对瘦身就做到了极致(参考链接)。
网上大部分的方案都是:
- 压缩图片
- 减少多余的so
- 删除无用资源
- 代码混淆
这些方案大部分都是在编写代码时期做的操作,容易出错和遗漏,我觉得这都算不上什么瘦身只能说是常识。于是我想能不能开发一款插件,在 APK
编译期间对 Apk
进行一系列的优化呢?
Android的Plugin插件
现在的 Android
集成开发工具 Android Studio
构建 APK
是通过 Gralde
脚本去构建,Gradle
完美兼容 Groovy
Java
Kotlin
语法。所以说 Android Studio
只是一个集成开发工具,没有这个工具我们也能 打包
运行
安装 APK
。
我们每个项目根路径都有一个 build.gradle
配置文件。开发 Android
根目录里面会配置一个 classpath 'com.android.tools.build:gradle:x.x.x'
的配置。这意思就是要 Android
的编译插件,这里面定义了所有的 Apk
打包,签名,安装等的一系列 Task
。
buildscript {
....
dependencies {
....
classpath 'com.android.tools.build:gradle:x.x.x'
}
}
classpath 'com.android.tools.build:gradle:x.x.x'
是基于Gralde
开发的,所以他们是有一个对应版本对象关系的。
一般我们升级自己项目的Gralde
也需要去升级下Android
编译插件。查看版本对应关系
最后我们会在项目的 build.gradle
配置使用插件,apply plugin: 'com.android.application'
或 apply plugin: 'com.android.library'
,也就是使用插件啦。
输出Apk编译的所有Task
根据上面的内容,我们知道了 APK
的打包流程,都是通过 apply plugin: 'com.android.application'
顺序执行 Task
完成的。我们来看看输出的有哪些 Task
吧。
在 App
项目中 build.gradle
编写以下代码。
project.afterEvaluate {
def tasks = ['preDebugBuild'