PGzxc的博客

纸上得来终觉浅 绝知此事要躬行

0%

Android开发之——打包发布及其优化

前言

项目开发中,不可避免会使用到Google官方类库或第三方类库,如何管理维护使用起来更加有效?打包发布时,如何混淆,规则是什么?混淆后的包体积更小、不会被破解;如何打渠道包等等;本文将通过实例讲解,为你一一解答。

打包实战

类库引入

类库引用说明

在使用类库引用时,可能会用到一下几个关键字:

  1. provider
  2. compile
  3. implementation
  4. api
  5. testImplementation
  6. androidTestImplementation
  7. testcompile
  8. androidtestcompile

一般类库引用

优化类库引用

  1. 使用config.gradle文件配置第三方和本地库

  2. 在项目根目录的build.gradle中导入

  3. 在app目录下的build.gradle中定义并使用


依赖冲突

引用第三方提供的依赖和类库,如果含有相同依赖的类库被我们引用时,而他们的版本又不相同,就有可能会导致一系列问题和异常。关于依赖冲突的问题,之前已经讲过,这里简要阐述。

问题

解决方案

混淆

如何开启混淆

release
    {
        minifyEnabled true//是否启动混淆 ture:打开   false:关闭
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

混淆中常用关键字

  1. dontwarn
  2. keep
  3. keepnames
  4. keepclassmembers
  5. keepclassmembernames

混淆后文件

  1. dump.txt
  2. mapping.txt
  3. seeds.txt
  4. usage.txt
  5. resources.txt

混淆(第三方类库)

本节主要讲述android-proguard-snippets的使用

  1. 将需要混淆的类库文件建立一个对应的.pro文件

  2. 使用如下方法引入需要混淆的类库

    签名

  3. 生成签名文件

    依次执行:build->Generate Signed APK->填写签名信息->生成.jks签名文件

  4. 要输入apk文件,必须有签名文件;按照如图所示,配置签名信息

  5. 在app目录下的build.gradle中配置签名信息

  6. 签名信息配置在gradle.properties中

  7. 签名信息存储在config.gradle中

多渠道包

  1. 配置productFlavors

    productFlavors
    {

    xiaomi {}    
    tencent { //腾讯}   
    qihu360 { //360}   

    }
    productFlavors.all
    {

    flavor -> flavor.manifestPlaceholders = [CHANNEL_VALUE: name]    

    }

  2. AndroidManifest.xml 配置CHANNEL_VALUE

  3. apk 生成规则

  4. mapping.xml生成规则(如umeng统计时会用到)

  5. 生成apk文件

打包优化

主要介绍AndResGuard的使用,AndResGuard是腾讯开源的资源混淆工具。

  1. 在项目根目录下的build.gradle中引用

    classpath ‘com.tencent.mm:AndResGuard-gradle-plugin:1.2.14’

  2. 将优化混淆规则放到and_res_guard.gradle文件夹中

  3. 在app的build.gradle中引用and_res_guard.gradle文件

  4. 在gadle构建任务下可以看到新生成的task任务

  5. 可以看到优化后的apk文件

  6. 使用反编译工具解压后可以看到