Android如何优雅地防止Bean类混淆
来源:互联网 发布:淘宝点击率 编辑:程序博客网 时间:2024/05/17 06:30
相信大家在开发Android app都会遇到一个问题:在打release包时bean类常常被混淆,导致出现空指针进而引发crash
如何做到保持指定的类不被混淆?方法不止一个
1、 在混淆配置文件中添加bean类包名,这样该包下所有的bean类都可以不被混淆了
-keep public class yourBeanPackageName.**{*;}
2、 使用@keep注解(推荐)
Android support library从19.1版本开始引入了一个新的注解库,它包含很多有用的元注解,你能用它们修饰你的代码,帮助你发现bug;你只要引用appcompat库或者support library就可以使用该注解了
dependencies { compile 'com.android.support:support-annotations:versionNum'//两选一 compile 'com.android.support:appcompat-versionNum'//两选一}
keep注解的定义
@Retention(CLASS)@Target({PACKAGE,TYPE,ANNOTATION_TYPE,CONSTRUCTOR,METHOD,FIELD})public @interface Keep {}
我们可以看出keep注解可以作用于包、类、接口、注解类型、构造器、方法、字段上,@那里,那里就可以不混淆是不是很方便;
注意: 如果你的Android SDK Tools版本足够高(>24),那么在proguard-rules.pro文件其实不用做任何改动,因为Google已经帮我们在proguard-android.txt文件配置好了(如果较低就把下面代码拷贝到proguard-android.txt中),具体相关配置如下:
# The support library contains references to newer platform versions.# Don't warn about those in case this app is linking against an older# platform version. We know about them, and they are safe.-dontwarn android.support.**# Understand the @Keep support annotation.-keep class android.support.annotation.Keep-keep @android.support.annotation.Keep class * {*;}-keepclasseswithmembers class * { @android.support.annotation.Keep <methods>;}-keepclasseswithmembers class * { @android.support.annotation.Keep <fields>;}-keepclasseswithmembers class * { @android.support.annotation.Keep <init>(...);}
3、 自定义注解
自定义注解原理其实和Keep一样,这里不在阐述了
0 0
- Android如何优雅地防止Bean类混淆
- 如何“优雅”地给你的类命名
- Android中如何优雅地自定义一个View
- android 如何优雅地给Activity和Fragement传入参数
- 如何优雅地写博客
- 如何优雅地使用NDK
- 如何优雅地使用Win10
- 如何优雅地写博客
- 如何优雅地使用 KVO
- 如何优雅地升级内核?
- Android 优雅地退出App
- 如何混淆Android项目代码(ProGuard),防止反编译
- 如何混淆Android项目代码(ProGuard),防止反编译
- 如何混淆Android项目代码(ProGuard)防止反编译
- 如何混淆Android项目代码(ProGuard),防止反编译
- android 如何防止代码被反编译(代码混淆)
- android代码混淆时,如何防止第三方jar包被混淆导致程序出错
- 女人如何优雅地报复男人
- 条件编译
- linux启停和运行级别
- Atitit. Atiposter 发帖机 新特性 poster new feature v11 .docx
- Java 内存泄露监控工具-- JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat
- 24号题目的另一种解决方法
- Android如何优雅地防止Bean类混淆
- java内存泄漏的定位与分析
- Android_三种菜单介绍
- 范型的使用和设计
- [心得] MacOS 神器之iterm经验
- 页面/跳转到指定url
- Cgroup的CPU资源隔离介绍&docker cpu限制
- Blob对象判断是不是图片类型以及Blob数据下载
- Atitit 发帖机实现(1)-----UsrQBm2008 页面上下文规范