Android 之 打包混淆ProGuard
2016-06-24 14:07
627 查看
[b]打包后的几个很重要的文件[/b]
需要记住的目录:
在Android studio的build文件夹下,build/outputs/mapping/下的文件
dump.txt 这个文件描述了APK中的class 文件的内部结构
mapping.txt 这个文件提供了一个对照列表,即原始的名字和混淆后的名字的对照表,在我们发布应用后收集到的bug 日志,需要根据这个表来进行定位bug的位置。
seeds.txt 这个文件列出了没有被混淆的类和成员
usage.txt 这个文件列出了被从APK文件中删除掉的代码
关于如何进行打包混淆
build.gradle 文件
通过getDefaultProguardFile函数加载默认的混淆配置文件,这里是proguard-android.txt,这个文件android studio 会到我们的SDK目录tools/proguard/文件夹下面去加载。在该文件夹下面我们也可以使用proguard-android-optimize.txt文件,这个文件和proguard-android.txt的混淆规则是一样的,但是还增加了一些优化,这些优化深入到字节码(.class file 也就是说会深入到方法中去进行优化)进行来进一步减少APK的大小并且提高运行速度。
剩下一个文件就是我们进行自定义混淆规则的文件,proguard-rules.pro 因为有些时候android studio在混淆时会把一些我们不希望进行混淆的类或者方法给混淆了,这个时候我们就需要在这个文件中列出我们不希望进行混淆的类或者方法,具体如何编写如下:
progurad-rules.pro 主要使用下面这些关键字来保持某些代码不被加入到混淆规则中去:
keep
keepclassmembers
keepclassmemebernames
keepclasswithmembers
keepclasswithmembernames
keepattributes
keepnames
keepdirectories
keepparameternames
keeppackagenames
keep*等关键字的作用和用法见下表:
。。。。待续
需要记住的目录:
在Android studio的build文件夹下,build/outputs/mapping/下的文件
dump.txt 这个文件描述了APK中的class 文件的内部结构
mapping.txt 这个文件提供了一个对照列表,即原始的名字和混淆后的名字的对照表,在我们发布应用后收集到的bug 日志,需要根据这个表来进行定位bug的位置。
seeds.txt 这个文件列出了没有被混淆的类和成员
usage.txt 这个文件列出了被从APK文件中删除掉的代码
关于如何进行打包混淆
build.gradle 文件
buildTypes{ release { minifyEnable true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
通过getDefaultProguardFile函数加载默认的混淆配置文件,这里是proguard-android.txt,这个文件android studio 会到我们的SDK目录tools/proguard/文件夹下面去加载。在该文件夹下面我们也可以使用proguard-android-optimize.txt文件,这个文件和proguard-android.txt的混淆规则是一样的,但是还增加了一些优化,这些优化深入到字节码(.class file 也就是说会深入到方法中去进行优化)进行来进一步减少APK的大小并且提高运行速度。
剩下一个文件就是我们进行自定义混淆规则的文件,proguard-rules.pro 因为有些时候android studio在混淆时会把一些我们不希望进行混淆的类或者方法给混淆了,这个时候我们就需要在这个文件中列出我们不希望进行混淆的类或者方法,具体如何编写如下:
progurad-rules.pro 主要使用下面这些关键字来保持某些代码不被加入到混淆规则中去:
keep
keepclassmembers
keepclassmemebernames
keepclasswithmembers
keepclasswithmembernames
keepattributes
keepnames
keepdirectories
keepparameternames
keeppackagenames
keep*等关键字的作用和用法见下表:
keep关键字 | 作用 | 示例 |
---|---|---|
keep | 通用保持一个类的某些方法或者成员不被混淆 | keep class com.xiaolei.model.csdndemo.* { *; } |
相关文章推荐
- Android 内存泄漏总结
- 小米推送简单使用方法
- Android优化指南
- Xamarin Android项目真机测试闪退
- Xamarin Android项目真机测试闪退
- android 获取屏幕信息
- android中使用PopupWindow实现弹出窗口菜单
- Android Clipboard(复制/剪贴板)
- 打造浪漫的Android表白程序
- Android中的复制粘贴
- android 设置系统屏幕亮度
- Android应用开发之(通过ClipboardManager, ClipData进行复制粘贴)
- Android LinearLayout实现下拉刷新
- 多线程下载
- Android Service 详解三:从类Service派生service
- Android Service 详解二:创建一个service
- Android Service 详解一:概述
- Android平台车牌识别开发手册
- android四大组件之Service(1) 介绍
- Android Touch事件传递机制