混淆设置 对sighed APK进行代码混淆和精简,从而使得发布的代码可以防止被别人反编译解析。...是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。...{ public void *(android.view.View); } # 保留枚举类不被混淆 -keepclassmembers enum * { public static *..., android.util.AttributeSet, int); } # 保留Parcelable序列化类不被混淆 -keep class * implements android.os.Parcelable...{ public static final android.os.Parcelable$Creator *; } # 保留Serializable序列化的类不被混淆 -keepclassmembers
Android混淆最佳实践 1....(很多老的混淆文件里会加,现在已经没必要) proguard-android.txt已经存在一些默认混淆规则,没必要在 proguard-rules.pro 重复添加 混淆简介 Android中的“混淆...具体做法是在 build.grade文件中,将shrinkResources属性设置为true。需要注意的是,只有在用minifyEnabled true开启了代码压缩后,资源压缩才会生效。...通过一些属性的设置可以实现定义资源保持的需求,可配置的属性有: keep 定义哪些资源需要被保留(资源之间用“,”隔开) discard 定义哪些资源需要被移除(资源之间用“,”隔开) shrinkMode...("img_%1d", angle + 1); res = getResources().getIdentifier(name, "drawable", getPackageName()); 我们可以设置
为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的步骤: 1....将你不需要混淆的部分申明进来,因为有些类经过混淆会导致程序编译不通过,如下: -keep public class * extends android.app.Fragment -keep public....** -keep public class com.android.vending.licensing.ILicensingService --以上都是API里边的类,最好都要避免混淆 有些很特殊的...,一般model最好避免混淆(model无关紧要,不混淆也没多大关系)如: -keep class com.bank.pingan.model.** { *; } 下面在贴上关于Umeng分享统计的避免混淆的申明...,最后需要做的就是在project.properties文件中加上你的混淆文件申明了,如下: proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt
一、混淆的意义 混淆代码并不是让代码无法被反编译,而是将代码中的类、方法、变量等信息进行重命名,把它们改成一些毫无意义的名字,同时也可以移除未被使用的类、方法、变量等。...二、混淆的规则和配置 凡是需要在AndroidManifest.xml中去注册的所有类的类名以及从父类重写的方法名都自动不会被混淆。...注意:string.xml中没有被引用的怎么设置都不会被删除。...(4)proguard-android.txt和proguard-rules.pro proguard-android.txt:代表系统默认的混淆规则配置文件,该文件在/tools/proguard下,...proguard-rules.pro:代码表当前Project的混淆配置文件,在app module下,可以通过修改该文件来添加适用当前项目的混淆规则。
Android 代码混淆 简介 在我们日常开发中,对已经开发完成的源代码,需做一些代码混淆工作,以对代码起到一种保护和降低安装包体积的作用。...开启混淆 在app的build.gradle文件中如下代码: android { .........//proguard-rules.pro:自定义混淆文件 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt...是proguard的四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。..., android.util.AttributeSet, int); } # 保留Parcelable序列化类不被混淆 -keep class * implements android.os.Parcelable
为了避免风险,你可以只是混淆部分关键的代码,但是这样你的混淆的效果也会有所降低。 常见的不能混淆的androidCode Android 程序 ,下面这样代码混淆的时候要注意保留。...Android系统组件,系统组件有固定的方法被系统调用。 被Android Resource 文件引用到的。名字已经固定,也不能混淆,比如自定义的View 。...其他Anroid 官方建议 不混淆的,如 android.app.backup.BackupAgentHelper android.preference.Preference com.android.vending.licensing.ILicensingService...自定义View Android Parcelable Android R 文件 Android Parcelable 枚举 各个开发人员必须检查自己的code 是否用到反射 ,和其他不能混淆的地方...-renamesourcefileattribute {string} 设置源文件中给定的字符串常量 解决export打包的报错 这个时候export提示“conversion to Dalvik
* extends android.support.v4.** -keep public class * extends android.app.Fragment #所有fragment的子类不要去混淆...com.android.vending.licensing.ILicensingService #保持指定规则的方法不被混淆(Android layout 布局文件中为控件配置的onClick方法不能混淆...) -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } #保持自定义控件指定规则的方法不被混淆...(aidl文件不能去混淆) -keep class * implements android.os.Parcelable { public static final android.os.Parcelable...,否则,你的反射是获取不到资源id的 -keep class **.R$* { *; } #以下针对App本身设置 #保护WebView对HTML页面的API不被混淆 -keep class **.Webview2JsInterface
请尊重他人的劳动成果,转载请注明出处:《Android代码混淆技巧》 因为Android是使用Java开发的,所以开发者可以使用ProGuard对代码进行混淆。...Eclipse+ADT时需要加入-libraryjars libs/…,如果你是使用Android Studio开发的项目则不需要加入libs包中的jar包,这是因为,通过Android Studio进行混淆代码时...################common############### -keep class com.jph.android.entity.** { *; } #实体类不参与混淆 -keep class...com.jph.android.view.** { *; } #自定义控件不参与混淆 ################baidu map############### -libraryjars libs...开发之反编译与防止反编译》 《Android代码混淆指南》 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/139053.html原文链接:https://javaforall.cn
(下面会讲) 除了proguard之外,还有一个DexGuard,是专门用来优化混淆Android应用的。它的功能包括资源混淆,字符串加密,类加密和dex文件分割等。...这里只允许设置一个mapping文件。仅在obfuscate阶段有效。 -obfuscationdictionary filename 指定一个文本文件用来生成混淆后的名字。...所以,设置filter的时候,要设置的足够 '严格' 预校验配置 ---- -dontpreverify 声明不预校验即将执行的类。...目标文件针对java6的情况下,预校验是可选的;针对java7的情况下,预校验是必须的,除非目标运行平台是Android平台,设置它可以节省一点点时间。...混淆相关的点就这些了,下面的例子中是Android应用混淆的默认文件。
minifyEnabled设置true app/build.gradle buildTypes { release { minifyEnabled true proguardFiles...getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } debug{...minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro...' } } 规则 app/proguard-rules.pro LINKS 关于Android混淆的一些经验
【混淆时不会产生形形色色的类名 】 -dontskipnonpubliclibraryclasses 【指定不去忽略非公共的库类。 ...class/merging/* 【优化】 -keep public class * extends android.app.Activity 【不进行混淆保持原样】 -keep public class...com.asqw.android.Listener{ public protected ; 【所有方法不进行混淆】 } -keep public class com.asqw.android...{ public void Start(java.lang.String); 【对该方法不进行混淆】 } -keepclasseswithmembernames class * { 【保护指定的类和类的成员的名称...ZMKSMarket_Build_v1.0] at proguard.ProGuard.main(ProGuard.java:499) 抛出这样的异常的原因是第三方jar的引用路径不对,没有找到这个需要忽略混淆的
proguard-android.txt’是Android SDK中自带的一个基本Progurad配置文件,默认是空白的,需要由开发者自行添加哪些需要混淆哪些不混淆,形如: -ignorewarning...class/merging/* # 混淆时所采用的算法 -keep public class * extends android.app.Activity # 保持哪些类不被混淆 -keep...# 保持哪些类不被混淆 -keep public class * extends android.content.BroadcastReceiver # 保持哪些类不被混淆 -keep...接下来优化的步骤中,那些非EntryPoint的类、方法都会被设置为private、static或final,不使用的参数会被移除,此外,有些方法会被标记为内联的。...public class * extends android.app.Fragment 混淆注意事项 混淆必须对项目不造成任何崩溃问题。
文章目录 一、Proguard 默认混淆结果 二、-keepclassmembers 混淆效果 二、-keepclasseswithmembernames 混淆效果 更多 ProGuard 混淆配置参考..., 就是没有 人为添加保留任何设置 , 使用的是 默认混淆文件 , 除了 MainActivity , 以及 MainActivity 中的 3 个内部类 , IdleHandler , Handler...) 不被混淆 , 类名还是会被混淆的 ; # 指定 kim.hsl.handler.Handler 类成员不被混淆 -keepclassmembers public class kim.hsl.handler.Handler...在编译后的结果中 , 类名与成员名称都被混淆了 , 因为没有配置不被混淆的成员 ; 使用 -keepclassmembers 指定保留 Handler 中的 public void *(*) 样式的方法不被混淆...*(*); } 下面是在一个被混淆的类中 , 找到了没有被混淆的 kim.hsl.handler.Handler 的成员方法 ; 二、-keepclasseswithmembernames 混淆效果
build.gradle文件中设置minifyEnabled为true,然后可以到proguard-rules.pro文件中加入我们的混淆规则即可。...大家看到了,有两个混淆文件,proguard-android.txt和proguard-rules.pro,proguard-rules.pro是我们需要自己编写的混淆文件,proguard-android.txt...这里说一下,你只要设置了minifyEnabled true开启混淆,其他的压缩,优化,预校验就默认开启了,那我们就可以开始proguard-rules.pro 文件的编写了,如图: ? ...除了proguard之外,还有一个DexGuard,是专门用来优化混淆Android应用的。它包括资源混淆,字符串加密,类加密和dex文件分割等。...等这些Java规则, #如下:保持Android底层组件和类不要混淆 -keep public class * extends android.app.Activity -keep public
未混淆代码的反编译操作非常简单,网上有很多教程, 也可以通过使用Android Studio自带的apk分析工具(Build—-Analyze APK)直接看到未混淆Apk的源代码和原始的资源文件。...在优化阶段,Proguard进一步设置非Entry Point的类和方法为private、static和final来进行优化,不使用的参数会被移除,某些方法会被标记被内联。...’) 方法可从 Android SDK tools/proguard/ 文件夹获取默认的 ProGuard 设置。...从Proguard 4.5开始,是默认的设置。...请参见ProGuard官方问题解答; 参考文献: 1、Android 项目的代码混淆,Android proguard 使用说明 2、google 混淆官方文档 3、混淆官方网址 4、Android混淆快速配置之
Android 代码混淆机制 由于Android项目是基于java语言的,而java属于高层抽象语言,易于反编译,其编译后的程序包包含了大量的源代码变量、函数名、数据结构等信息,根据其编译打包后的APK...(android.content.Context, android.util.AttributeSet); #保持自定义控件类不被混淆,指定格式的构造方法不去混淆 } -keepclasseswithmembers...class * extends android.app.Activity { public void *(android.view.View); #保持指定规则的方法不被混淆(Android...3.切换左侧的“shrinking”,obfuscation”和“optimization”等标签来设置你所需要的混淆规则。...4.点击information,设置如图所示,注意选择jdk版本(Target选项)。
2、考虑到关闭混淆正常,开启混淆异常,那么就定位到时混淆的问题 3、既然是混淆问题那就查看混淆配置文件proguard-rules.pro,基本的配置都已经防混淆了 4、接下来的思路就是通过反编译来查看...我们的BaseApplication继承的application被混淆了 那么在’proguard-rules.pro’中加入一句-keep class android.app.**{*;} 运行后报错如下...结论 综上,我们可以分析出来是我们的android包下面的文件都被混淆了,于是我们把-keep class android.content.**{*;}和-keep class android.app....**{*;}合二为一-keep class android.**{*;} 不过按照道理来讲这个不应该被混淆,系统会做处理,猜测可能是某个配置导致系统的一些配置失效,至于该工程为啥这么奇葩待后续分析。...所以以后遇到混淆的问题就按照提示一步一步排查,一定要反编译文件来分析问题,不然无法定位原因。 还有第一次混淆后建议反编译查看一下包里面的代码,有没有需要混淆的核心代码被keep掉了。
使用方式,在gradle文件中设置minifyEnabled为true即可开启混淆 buildTypes { release { minifyEnabled ture //是否开启代码混淆 proguardFiles...getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } 混淆内容在proguard-android.txt文件中写...混淆设置参数 -optimizationpasses 4 代码混淆的压缩比例,值介于0-7 -dontusemixedcaseclassnames 混淆后类型都为小写 -dontskipnonpubliclibraryclasses...保持不被混淆的设置 保持实体类不混淆 -keep class 你的实体类所在的包.** { *; } 保持四大组件,Application,Fragment不混淆 -keep public class...{ public static final android.os.Parcelable$Creator *; } 保持第三方包不混淆,比如这里用到微信、支付宝支付第三方 #支付宝混淆 -keep
Proguard作用 Android中的“混淆”可以分为两部分,一部分是 Java 代码的优化与混淆,依靠 proguard 混淆器来实现;另一部分是资源压缩,将移除项目及依赖的库中未被使用的资源(资源压缩严格意义上跟混淆没啥关系...具体做法是在 build.grade 文件中,将 shrinkResources 属性设置为 true。需要注意的是,只有在用minifyEnabled true开启了代码压缩后,资源压缩才会生效。...-dontskipnonpubliclibraryclassmembers:是否混淆非公共的库的类的成员 -dontpreverify:混淆时是否做预校验(Android不需要预校验,去掉可以加快混淆速度...通过一些属性的设置可以实现定义资源保持的需求,可配置的属性有: tools:keep 定义哪些资源需要被保留(资源之间用“,”隔开) tools:discard 定义哪些资源需要被移除(资源之间用“,”...("img_%1d", angle + 1); res = getResources().getIdentifier(name, "drawable", getPackageName()); 我们可以设置
--------------------- #---------------------------------2.第三方包------------------------------- #高德地图混淆...keep class com.amap.api.fence.**{*;} -keep class com.autonavi.aps.amapapi.model.**{*;} #GreeDao 混淆配置...net.sqlcipher.database.** -dontwarn net.sqlcipher.database.** -dontwarn org.greenrobot.greendao.** #OKHttp 混淆配置...-keep public class * extends android.app.Application -keep public class * extends android.app.Service..., android.util.AttributeSet); public (android.content.Context, android.util.AttributeSet, int
领取专属 10元无门槛券
手把手带您无忧上云