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" />
本文作者:宋志辉  
个人微博:点击进入
4.2、Android Studio压缩你的代码和资源的更多相关文章
- 使用Android Studio向GitHub提交代码
		
使用Android Studio向GitHub提交代码 在GitHub上创建一个仓库 填写仓库名称.描述.类型(公有.私有)等信息,点击创建 到此,成功创建了我们的仓库,并且初始化创建了README. ...
 - (转)Android studio 使用心得(五)—代码混淆和破解apk
		
这篇文章等是跟大家分享一在Android studio 进行代码混淆配置.之前大家在eclipse上也弄过代码混淆配置,其实一样,大家可以把之前在eclipse上的配置文件直接拿过来用.不管是.cfg ...
 - Android studio 使用心得(五)—代码混淆和破解apk
		
这篇文章等是跟大家分享一在Android studio 进行代码混淆配置.之前大家在eclipse上也弄过代码混淆配置,其实一样,大家可以把之前在eclipse上的配置文件直接拿过来用.不管是.cfg ...
 - 【Android Studio快捷键】之代码提示
		
接下来说如何设置代码自动提示,如图: 图上内容比较多,我直接按区域划分成6块区域来说吧: 区域1:这个选项是关于提示的时候如何进行匹配,即按照什么条件来进行提示内容的搜索. All:选择这个的话,意思 ...
 - android studio 打开github开源代码
		
1.最近下载的开源代码全是github来的,一直用eclipse开发,对于android studio来说是全新的 2.在eclipse导入一个工程那是so easy, import选择一下就可以. ...
 - Android Studio 配置SVN实现代码管理
		
Refference From:http://iaiai.iteye.com/blog/2267346 一.Android Studio配置SVN Android Studio关联配置SVN很简单,在 ...
 - 2.2、Android Studio通过注解提升代码检测
		
使用像Lint这样的代码检测工具可以帮助你发现问题和提升代码,但是代码检测在有些地方很难应用.例如,Android的资源ID,使用一个int类型来表示字符.图像.颜色或者其他资源类型所以代码检测工具不 ...
 - Android Studio使用Lint进行代码检查
		
Android Studio目前已经更新到1.4版本,它作为Google官方推荐的IDE,功能非常强大,其中提供了一套静态代码分析工具,它可以帮助我们检查项目中存在的问题,让我们更有规范性的开发App ...
 - Android studio下将项目代码上传至github包括更新,同步,创建依赖
		
AS中设置GIT 一.开篇 本文讲如何使用Android Studio将项目上传到github,虽然讲上传github的文章很多,但是大部分都是使用Git Bash命令行,虽然效率高些,但是有点麻烦, ...
 
随机推荐
- ●BZOJ 2007 NOI 2010 海拔
			
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=2007 题解: 网络流.最小割.对偶图 奇妙的题 ~ 种种原因导致了高度要么为 0,要么为 1 ...
 - 2015 多校联赛 ——HDU5303(贪心)
			
Delicious Apples Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Other ...
 - 51Nod 1331 狭窄的通道
			
有一个长为L的狭窄通道,我们假设这个通道在x轴上,其两个出口分别在x=0与x=L处.在这个通道里有N只狼,第i只狼有一个初始位置ai,它想到达位置bi(0<=i=L处空间足够大可以装下任意数量的 ...
 - win7+Apache 设置域名指向本地文件夹
			
实现:浏览器地址栏输入 www.bnzoo.com 访问 D:/www 系统:win7旗舰版+Apache 步骤: 1.打开文件 C:\Windows\System32\drivers\etc\hos ...
 - K-means聚类 的 Python 实现
			
K-means聚类 的 Python 实现 K-means聚类是一个聚类算法用来将 n 个点分成 k 个集群. 算法有3步: 1.初始化– K 个初始质心会被随机生成 2.分配 – K 集群通过关联到 ...
 - 索引法则--IS NULL, IS NOT NULL 也无法使用索引
			
Mysql 系列文章主页 =============== 1 数据准备 1.1 建表 DROP TABLE IF EXISTS staff; CREATE TABLE IF NOT EXISTS st ...
 - web领域的实时推送技术-WebSocket
			
WebSocket protocol 是HTML5一种新的协议.它实现了浏览器与服务器全双工通信(full-duplex),即是所谓的及时推送技术. 在此之前,很多网站为了实现及时推送技术通常采用的是 ...
 - Python小代码_8_今天是今年的第几天
			
import time date = time.localtime() print(date) #time.struct_time(tm_year=2018, tm_mon=2, tm_mday=24 ...
 - .net通用CMS快速开发框架——问题1:Dapper通用的多表联合分页查询怎么破?
			
最近在弄一个东东,类似那种CMS的后台管理系统,方便作为其它项目的初始化框架用的. 现在遇到个问题,如标题所示:Dapper通用的多表联合分页查询怎么破? 难道只能通过拼接sql或者使用存储过程吗?我 ...
 - DOS/Windows 文本格式与 Unix 文本各式转换
			
命令简介: dos2unix是将Windows格式文件转换为Unix.Linux格式的实用命令.Windows格式文件的换行符为\r\n ,而Unix&Linux文件的换行符为\n. dos2 ...