Android混淆最佳实践 1....WebView中JavaScript调用的方法 Layout布局使用的View构造函数、android:onClick等。 检查混淆结果 混淆过的包必须进行检查,避免因混淆引入的bug。...(很多老的混淆文件里会加,现在已经没必要) proguard-android.txt已经存在一些默认混淆规则,没必要在 proguard-rules.pro 重复添加 混淆简介 Android中的“混淆...在Android项目中我们可以选择将“优化”和“预校验”关闭,对应命令是-dontoptimize、-dontpreverify(当然,默认的 proguard-android.txt文件已包含这两条混淆命令...安全攻防战,反编译与混淆技术完全解析(下) Android混淆从入门到精通 Android代码混淆之ProGuard 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/
为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的步骤: 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
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
一、混淆的意义 混淆代码并不是让代码无法被反编译,而是将代码中的类、方法、变量等信息进行重命名,把它们改成一些毫无意义的名字,同时也可以移除未被使用的类、方法、变量等。...二、混淆的规则和配置 凡是需要在AndroidManifest.xml中去注册的所有类的类名以及从父类重写的方法名都自动不会被混淆。...(4)proguard-android.txt和proguard-rules.pro proguard-android.txt:代表系统默认的混淆规则配置文件,该文件在/tools/proguard下,...proguard-rules.pro:代码表当前Project的混淆配置文件,在app module下,可以通过修改该文件来添加适用当前项目的混淆规则。...mapping.txt : 列出了原始的类、方法和名称与混淆代码间的映射。 seeds.txt : 列出了没有混淆的类和方法。 usage.txt : 列出congapk中删除的代码。
层下所有的类默认不会进行混淆; Parcelable的子类和Creator静态成员变量不混淆,否则会产生Android.os.BadParcelableException异常; 使用GSON、fastjson...* 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
为了避免风险,你可以只是混淆部分关键的代码,但是这样你的混淆的效果也会有所降低。 常见的不能混淆的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 是否用到反射 ,和其他不能混淆的地方...com.asqw.android.Listener{ public protected ; 【所有方法不进行混淆】 } -keep public class com.asqw.android
buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt...} debug{ minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt...'), 'proguard-rules.pro' } } 规则 app/proguard-rules.pro LINKS 关于Android混淆的一些经验
混淆设置 对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
(下面会讲) 除了proguard之外,还有一个DexGuard,是专门用来优化混淆Android应用的。它的功能包括资源混淆,字符串加密,类加密和dex文件分割等。...如果有Android SDK的同学可以在{ANDROID_SDK_ROOT}/tools/proguard/lib/目录下找到proguard.jar这个jar包。...那我们的命令可以这样写: java -jar proguard.jar @proguard.cfg 这个文件也就是我们在Android Studio中经常配置的混淆文件了。...混淆相关的点就这些了,下面的例子中是Android应用混淆的默认文件。...它放在{android_sdk_home}/tools/proguard/proguard-android.txt文件中,其它的可以参考的例子在{android_sdk_home}/tools/proguard
请尊重他人的劳动成果,转载请注明出处:《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 默认混淆结果 二、-keepclassmembers 混淆效果 二、-keepclasseswithmembernames 混淆效果 更多 ProGuard 混淆配置参考...: https://www.guardsquare.com/en/products/proguard/manual/usage 一、Proguard 默认混淆结果 ---- ProGuard 的默认混淆结果...) 不被混淆 , 类名还是会被混淆的 ; # 指定 kim.hsl.handler.Handler 类成员不被混淆 -keepclassmembers public class kim.hsl.handler.Handler...在编译后的结果中 , 类名与成员名称都被混淆了 , 因为没有配置不被混淆的成员 ; 使用 -keepclassmembers 指定保留 Handler 中的 public void *(*) 样式的方法不被混淆...*(*); } 下面是在一个被混淆的类中 , 找到了没有被混淆的 kim.hsl.handler.Handler 的成员方法 ; 二、-keepclasseswithmembernames 混淆效果
【混淆时不会产生形形色色的类名 】 -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...# 保持哪些类不被混淆 -keep public class * extends android.preference.Preference # 保持哪些类不被混淆 -keep public...public class * extends android.app.Fragment 混淆注意事项 混淆必须对项目不造成任何崩溃问题。
Proguard介绍 Android SDK自带了混淆工具Proguard。它位于SDK根目录\tools\proguard下面。...Proguard作用 Android中的“混淆”可以分为两部分,一部分是 Java 代码的优化与混淆,依靠 proguard 混淆器来实现;另一部分是资源压缩,将移除项目及依赖的库中未被使用的资源(资源压缩严格意义上跟混淆没啥关系...-dontskipnonpubliclibraryclassmembers:是否混淆非公共的库的类的成员 -dontpreverify:混淆时是否做预校验(Android不需要预校验,去掉可以加快混淆速度...); public (android.content.Context, android.util.AttributeSet, int); } 5.6 保留指定格式的构造方法不被混淆...# 混淆时是否做预校验(Android不需要预校验,去掉可以加快混淆速度) -verbose # 混淆时是否记录日志
未混淆代码的反编译操作非常简单,网上有很多教程, 也可以通过使用Android Studio自带的apk分析工具(Build—-Analyze APK)直接看到未混淆Apk的源代码和原始的资源文件。...Android Studio 默认的混淆方案及字段解读 开启混淆 参见google官方文档压缩代码和资源 要通过Proguard启动代码压缩,在build.gradle文件内相应的构建类型中添加minifyEnabled...在proguard-android.txt-2.3.3文件中也写有说明,gradle 2.2之后自带混淆文件: Starting with version 2.2 of the Android plugin....** -dontwarn android.support.** # 保留四大组件,自定义的Application等这些类不被混淆 -keep public class * extends android.app.Activity...请参见ProGuard官方问题解答; 参考文献: 1、Android 项目的代码混淆,Android proguard 使用说明 2、google 混淆官方文档 3、混淆官方网址 4、Android混淆快速配置之
大家看到了,有两个混淆文件,proguard-android.txt和proguard-rules.pro,proguard-rules.pro是我们需要自己编写的混淆文件,proguard-android.txt...除了proguard之外,还有一个DexGuard,是专门用来优化混淆Android应用的。它包括资源混淆,字符串加密,类加密和dex文件分割等。...等这些Java规则, #如下:保持Android底层组件和类不要混淆 -keep public class * extends android.app.Activity -keep public...自定义的View默认也不会被混淆;所以像网上贴的很多排除自定义View,或四大组件被混淆的规则在Android Studio中是无需加入的; 4,与服务端交互时,使用GSON、fastjson等框架解析服务端数据时...JS调用也需要保证写的接口方法不混淆,原因和第一条一样; 7,Parcelable的子类和Creator静态成员变量不混淆,否则会产生Android.os.BadParcelableException异常
Android 代码混淆机制 由于Android项目是基于java语言的,而java属于高层抽象语言,易于反编译,其编译后的程序包包含了大量的源代码变量、函数名、数据结构等信息,根据其编译打包后的APK...如果大家想避免自己的成果被别人夺取,然后重新修改策划而额外增加的工作量,那就尽量得自己的Android项目加上混淆吧。...具体方法 比较常用的方法有以下两种: 一、通过eclipse混淆代码 启用代码混淆 找到Android项目目录下的project.properties文件,如果需要对项目进行全局混码,只需要进行一步操作...(android.content.Context, android.util.AttributeSet); #保持自定义控件类不被混淆,指定格式的构造方法不去混淆 } -keepclasseswithmembers...class * extends android.app.Activity { public void *(android.view.View); #保持指定规则的方法不被混淆(Android
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掉了。
对于这种情况,我们可以对项目代码进行混淆,随机生成难理解的类名,方法名,让代码难以阅读,加大功能被盗取的难度。混淆可以起到压缩Apk,混淆文件,预检,优化的作用。 1....getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ } } 混淆内容在proguard-android.txt文件中写...-keep public class * extends android.preference.Preference 保持 native 方法不被混淆 -keepclasseswithmembernames...static ** valueOf(java.lang.String); } 保持 Parcelable 不被混淆 -keep class * implements android.os.Parcelable...{ public static final android.os.Parcelable$Creator *; } 保持第三方包不混淆,比如这里用到微信、支付宝支付第三方 #支付宝混淆 -keep
--------------------- #---------------------------------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元无门槛券
手把手带您无忧上云