Android开发之——打包发布及其优化
前言
项目开发中,不可避免会使用到Google官方类库或第三方类库,如何管理维护使用起来更加有效?打包发布时,如何混淆,规则是什么?混淆后的包体积更小、不会被破解;如何打渠道包等等;本文将通过实例讲解,为你一一解答。
打包实战
类库引入
类库引用说明
在使用类库引用时,可能会用到一下几个关键字:
- provider
- compile
- implementation
- api
- testImplementation
- androidTestImplementation
- testcompile
- androidtestcompile
一般类库引用
优化类库引用
使用config.gradle文件配置第三方和本地库
在项目根目录的build.gradle中导入
在app目录下的build.gradle中定义并使用
依赖冲突
引用第三方提供的依赖和类库,如果含有相同依赖的类库被我们引用时,而他们的版本又不相同,就有可能会导致一系列问题和异常。关于依赖冲突的问题,之前已经讲过,这里简要阐述。
问题
解决方案
混淆
如何开启混淆
release
{
minifyEnabled true//是否启动混淆 ture:打开 false:关闭
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
混淆中常用关键字
- dontwarn
- keep
- keepnames
- keepclassmembers
- keepclassmembernames
混淆后文件
- dump.txt
- mapping.txt
- seeds.txt
- usage.txt
- resources.txt
混淆(第三方类库)
本节主要讲述android-proguard-snippets的使用
将需要混淆的类库文件建立一个对应的.pro文件
使用如下方法引入需要混淆的类库
签名
生成签名文件
依次执行:build->Generate Signed APK->填写签名信息->生成.jks签名文件
要输入apk文件,必须有签名文件;按照如图所示,配置签名信息
在app目录下的build.gradle中配置签名信息
签名信息配置在gradle.properties中
签名信息存储在config.gradle中
多渠道包
配置productFlavors
productFlavors
{
xiaomi {}
tencent { //腾讯}
qihu360 { //360}
}
productFlavors.all
{
flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name]
}AndroidManifest.xml 配置CHANNEL_VALUE
apk 生成规则
mapping.xml生成规则(如umeng统计时会用到)
生成apk文件
打包优化
主要介绍AndResGuard的使用,AndResGuard是腾讯开源的资源混淆工具。
在项目根目录下的build.gradle中引用
classpath 'com.tencent.mm:AndResGuard-gradle-plugin:1.2.14'
将优化混淆规则放到and_res_guard.gradle文件夹中
在app的build.gradle中引用and_res_guard.gradle文件
在gadle构建任务下可以看到新生成的task任务
可以看到优化后的apk文件
使用反编译工具解压后可以看到