4.2、Android Studio压缩你的代码和资源

为了让你的APK文件尽可能的小,你需要在构建的时候开启压缩来移除无用的代码和资源。

代码压缩可在ProGuard中使用,可以检测和清除无用的类,变量,方法和属性,甚至包括你引用的库。ProGuard同样可以优化字节码,移除无用的代码,并且模糊剩下的类,变量和方法。代码模糊可以让增加APK逆向工程的成本。

资源压缩可在Andorid的Gradle插件中使用,可以清除你打包的APP中无用的资源,包含你引用的库中的无用的资源。

压缩你的代码
为了启用ProGuard的代码压缩,需要在build.gradle中添加minifyEnabled true。

需要注意的是,代码压缩会拖慢构建速度,所以,如果可能的话,尽量避免在debug构建是使用。

如下:

android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile(‘proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
    ...
}

注意:Android Studio在使用Instant Run时会禁用ProGuard。

自定义哪些代码需要保留
在很多情况下,ProGuard很难正确的去分析,它可能会清除你的app需要的代码。
1、 当你的app从AndroidManifest.xml中引用一个类时
2、 当你的app调用一个JNI方法
3、 当你的app使用反射来控制代码

为了避免这个问题,需要使用-keep,如下:
-keep public class MyClass

同样,可以添加@Keep注解来实现。

压缩你的资源
资源压缩需要跟代码压缩一起才能正常使用。在代码压缩出去所有的无用的代码之后,才能辨别哪些资源仍然未被使用。如下:

android {
    ...
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'),
                    'proguard-rules.pro'
        }
    }
}

自定义哪些资源需要保留
如果这里有些特别的资源你需要保留或丢弃,在你的项目中创建一个包含标签的XML文件,用tools:keep指明需要保留的资源,用tools:discard指明需要丢弃的文件。
比如:

<?xml version=1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*"
    tools:discard="@layout/unused2" />

本文作者:宋志辉
个人微博:点击进入

时间: 2024-07-29 01:59:12

4.2、Android Studio压缩你的代码和资源的相关文章

android studio 如何做到的代码上面显示文字?鼠标点击出现string,放在上面是文字

问题描述 android studio 如何做到的代码上面显示文字?鼠标点击出现string,放在上面是文字 解决方案 不是有 string.xml吗? 为什么要直接显示在代码上? 解决方案二: 我觉得这种功能特别好,编辑的时候看见文字就能找到整个控件,要不全是代码看着乱.

android studio不能实时监测代码拼写错误的问题

问题描述 android studio不能实时监测代码拼写错误的问题 为什么我的代码拼写错误,studio不显示任何提示或警告呢? 就像eclipse中的红曲线一样 解决方案 android studio是会提示代码错误的,除非你的代码没有错 解决方案二: android studio代码格式化问题 解决方案三: 我找到错了,我是没有选上POWER SAVE MODE··· 解决方案四: 我也有一样的问题,不知道是不是跟我更新了有关···请问楼主找到问题了吗 解决方案五: 这个博客上有Andro

2.2、Android Studio通过注解提升代码检测

使用像Lint这样的代码检测工具可以帮助你发现问题和提升代码,但是代码检测在有些地方很难应用.例如,Android的资源ID,使用一个int类型来表示字符.图像.颜色或者其他资源类型所以代码检测工具不能分辨这是一个字符串资源,还是一个颜色资源.这种情况下,即使你使用代码检测工具,你的app可能会渲染失败或者不能运行. 注解允许你为Lint这样的代码检测工具提供提示来帮助Lint检测更深层次问题.当你使用代码检测工具的时候,注解可以帮助你检测问题,比如空指针异常和资源类型冲突. Android支持

编码-android studio导入eclipse项目

问题描述 android studio导入eclipse项目 android studio导入eclipse项目后,出现了乱码,原先是GBK的,在studio中我也把编码改成了GBK 代码里的中文也不乱码了,可是问题来了: 重新编译后,还是提示乱码,下面是截图 解决方案 Android Studio 导入 Eclipse 的代码后,运行时中文显示乱码 Android Studio 1.2 编译出来在手机上运行时显示乱码 解决方案二: android studio 导入eclipse项目乱码处理

49个你应该了解的Android Studio技巧、插件与资源

本文讲的是49个你应该了解的Android Studio技巧.插件与资源,撰写本文的初衷,是为了罗列出Android Studio有用的提示.技巧.快捷方式和参考资源,将提高您的整体效率和操作性能. 显然,还有很多优化.快捷方式等,但作者为了保持这篇文章的简短,限制为49个,希望读者会喜欢这篇文章! 注:本文是以MacOS X操作Android Studio为例,与Windows / Linux不一致的地方已经标注,请读者注意这一点. 可视化 1.Android Logcat的材料颜色主题(Ma

50个Android Studio秘诀、技巧和资源

作者撰写本文的初衷,是为了罗列出Android Studio有用的提示.技巧.快捷方式和参考资源,将提高您的整体效率和操作性能. 显然,Android Studio的使用技巧还有很多,还有很多优化.快捷方式等,但作者为了保持这篇文章的简短,限制为50个,希望读者会喜欢这篇文章! 可视化 1. Android Logcat的输出信息颜色主题(Material Colors theme).  要更改Android Studio Logcat,您需要依次点击:Preferences → Editor

svn-Android Studio使用SVN更新代码时报database is locked要怎么解决

问题描述 Android Studio使用SVN更新代码时报database is locked要怎么解决 解决方案 svn: E200033: database is locked解决办法svn is already locked解决办法svn is already locked解决方案 解决方案二: 先clean up 试试看看

《Android App开发入门:使用Android Studio 2.X开发环境》—— 2-2 Android 程序的设计流程

2-2 Android 程序的设计流程 Android程序设计是把程序代码和资源(Resource)分开设计的."资源"包含界面的安排.字符串对象.图形对象.音乐对象等,这些对象都以文件的方式存放在项目的 res 文件夹下,再构建(Build)起来成为 .apk 文件,最后由用户下载安装到手机上使用. Android 的资源以视觉部分最多,其他也包含音乐.字符串等资源,为解说方便,除非在特别谈到音乐.字符串等资源时,否则我们多以视觉资源为代表. 视觉设计和程序逻辑 原本 Android

Android Studio 1.0.1 + Genymotion安卓模拟器打造高效安卓开发环境

我们开发安卓大多是使用Eclipse和安卓SDK中自带的安卓模拟器.当然,Google早就推出了自己的安卓开发环境--Android studio,在不久前,Google发布了Android Studio 1.0,个人感觉使用起来还是不错的.之前下载过一些Android studio的早期版本,但是都因为"网络问题"而安装失败,无奈删除.而这一次,Android studio 1.0下载后,不需要再联网下载东西了,直接解压就可以使用.    一.Android Studio 1.0.1