层下所有的类默认不会进行混淆; 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
概述 我们知道在Android的打包过程中,有一个步骤是压缩,也是为了减少apk包的大小,其中在压缩的过程中,很大一部分就是对资源的压缩,除了系统的压缩方案之外,我们今天讲另外两种压缩方案:微信方案和美团方案...微信资源混淆方案 微信中的资源混淆工具主要为了混淆资源ID长度(例如将res/drawable/welcome.png混淆为r/s/a.png),同时利用7z深度压缩,大大减少了安装包体积,同时也增加了逼格...不依赖源码,不依赖编译过程,仅仅输入一个安装包,得到一个混淆包。 上述方案的对比: ? 综合对比,方案三能做到做到最大混淆,并且不依赖源码和编译过程。...然后我们在与7z的极限压缩结合,同时我们也可以强制压缩类似resources.arsc、png、jpg等Android默认不会打包压缩的文件。最后把修改后的resources.arsc重打包即可。...美团方案 Android查找资源的流程 在Android系统中,每一个应用程序一般都会配置很多资源,用来适配不同密度、大小和方向的屏幕,以及适配不同的国家、地区和语言等等。
概述 我们知道在Android的打包过程中,有一个步骤是压缩,也是为了减少apk包的大小,其中在压缩的过程中,很大一部分就是对资源的压缩,除了系统的压缩方案之外,我们今天讲另外两种压缩方案:微信方案和美团方案...微信资源混淆方案 微信中的资源混淆工具主要为了混淆资源ID长度(例如将res/drawable/welcome.png混淆为r/s/a.png),同时利用7z深度压缩,大大减少了安装包体积,同时也增加了逼格...不依赖源码,不依赖编译过程,仅仅输入一个安装包,得到一个混淆包。 上述方案的对比: ? 综合对比,方案三能做到做到最大混淆,并且不依赖源码和编译过程。...然后我们在与7z的极限压缩结合,同时我们也可以强制压缩类似resources.arsc、png、jpg等Android默认不会打包压缩的文件。...美团方案 Android查找资源的流程 在Android系统中,每一个应用程序一般都会配置很多资源,用来适配不同密度、大小和方向的屏幕,以及适配不同的国家、地区和语言等等。
常见的不能混淆的androidCode Android 程序 ,下面这样代码混淆的时候要注意保留。 Android系统组件,系统组件有固定的方法被系统调用。...被Android Resource 文件引用到的。名字已经固定,也不能混淆,比如自定义的View 。 Android Parcelable ,需要使用android 序列化的。...其他Anroid 官方建议 不混淆的,如 android.app.backup.BackupAgentHelper android.preference.Preference...Android系统组件 自定义View Android Parcelable Android R 文件 Android Parcelable 枚举 各个开发人员必须检查自己的code 是否用到反射 ,和其他不能混淆的地方...error = 1 / 0; } catch (Exception e) { e.printStackTrace(); } } } 2.打包反编译之后
一般自己打包的jar包需要屏蔽混淆的代码: -dontwarn com.nostra13.universalimageloader.** 这是需要防止需要被打包 -keep class com.nostra13...universalimageloader.** {*;} -keep public class * extends com.nostra13.universalimageloader.** gson包屏蔽代码混淆时不能混淆相关的...还要配置 default.properties 把proguard.config = proguard.cfg 加上 -ignorewarnings 屏蔽warning警告日志,脚本中把这行注释去掉 Android...导入第三方jar包,proguard混淆脚本(屏蔽警告,不混淆第三方包) 最近1个项目中 需要导入移动MM的第三方计费包,混淆时用到了如下脚本,可屏蔽警告,不混淆第三方包指定内容。...class/merging/* //这1句是导入第三方的类库,防止混淆时候读取包内容出错,脚本中把这行注释去掉
.** 即:混淆规则。 自己没写过关于混淆打包的文章,在此补上。 下面了解Android studio环境下 项目混淆打包的操作。...---------------------------------------------------------------------------------------- 一、打包: 即 将Android...打包过程如上,over。...所以现在我们在打包一个项目之前,都要对项目进行混淆处理,让Apk无法被轻易的反编译,提高产品的安全性。 混淆操作需要进行一些配置。...程序的混淆文件,该文件已经包含了基本的混淆声明,后一个文件是自己的定义混淆文件 proguardFiles getDefaultProguardFile('proguard-android.txt
请大家不要再走回头路,可能只要我们代码加混淆,一点不对就会导致项目运行崩溃等后果,有许多人发现没有打包运行好好地,打包完成以后而又不不可以了,导致了许多困惑,本片文章来问大家解决困惑,希望对大家有帮助。...Android混淆最佳实践 1....使用上文的配置进行混淆打包后在/build/outputs/mapping/release/目录下会输出以下文件: dump.txt 描述APK文件中所有类的内部结构 mapping.txt...(很多老的混淆文件里会加,现在已经没必要) proguard-android.txt已经存在一些默认混淆规则,没必要在 proguard-rules.pro 重复添加 混淆简介 Android中的“混淆...安全攻防战,反编译与混淆技术完全解析(下) 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
于当天晚上整合好项目,准备第一次的混淆打包(release模式),然后第一次测试,结果,我意料中的事情发生了,没错,就是在混淆后经常发生的各种 蹦,对于这类问题,不吹不黑,我经验算是丰富的了,一般都是在... proguard-rules 文件(android studio) 下做混淆设置解决的,但我不得不承认,这个是我迄今遇到最棘手的,直到 15:46 才正式解决,怎么说都 4 天了,百度上没有直接的解决信息...前序: 先说说这个开源项目的背景吧,它是基于 Vine 的背景下进行开发的,Vine 是外国的一个做短视频分享起家的公司,也是他们 APP 的名字,后被Twitter收购,目前网上的录制视频都是基于android...Vine 录制视频使用javacv自带的api, 录制声音使用的是android的AudioRecord,同样,这个开源项目也是基于 二者 开发的。...-keep 和 -dontwarn,然后再补上一句不混淆 native方法-> ? ,依赖注入不混淆-> ? ,还不放心的话,可以狠点再次指出属性和方法都不混淆-> ?
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中去注册的所有类的类名以及从父类重写的方法名都自动不会被混淆。...(1)minifyEnabled minifyEnabled为true的作用:启用代码混淆、压缩APK; minifyEnabled会对资源进行压缩,多余的代码在打包的时候就给移除掉了。...shrinkResources true,防止避免误删除的文件,可以配置如下: 在res/raw/keep.xml(避免被误删除)写了配置的 对于没有被引用的文件&没有在配置文件keep.xml中声明保存的文件,打包后是没有内容的...(4)proguard-android.txt和proguard-rules.pro proguard-android.txt:代表系统默认的混淆规则配置文件,该文件在/tools/proguard下,
为了避免风险,你可以只是混淆部分关键的代码,但是这样你的混淆的效果也会有所降低。 常见的不能混淆的androidCode Android 程序 ,下面这样代码混淆的时候要注意保留。...Android系统组件,系统组件有固定的方法被系统调用。 被Android Resource 文件引用到的。名字已经固定,也不能混淆,比如自定义的View 。...自定义View Android Parcelable Android R 文件 Android Parcelable 枚举 各个开发人员必须检查自己的code 是否用到反射 ,和其他不能混淆的地方...打包出来的程序如何调试 一旦打包出来,就不能用eclipse的logcat去看了,这里可以用android sdk中ddms.bat的tool来看,一用就发现和logcat其实还是一个东西,就是多了个设备的选择...利用了apktool的反编译工具,把打包文件又解压了看了一下,如果包路径、类名、变量名、方法名这些变化和你期望一致,那就OK了。
(下面会讲) 除了proguard之外,还有一个DexGuard,是专门用来优化混淆Android应用的。它的功能包括资源混淆,字符串加密,类加密和dex文件分割等。...我们在编译正式包的时候打包脚本自动帮我们执行了这条命令。通过这个脚本可以避免重复输入参数。...如果没有这个配置,在第一次打包混淆之后,他们两个方法可能会被赋予不同的混淆名。如果说下一次添加代码的时候有一个类同时实现了两个接口,那么混淆的时候必然会将两个混淆后的方法名统一起来。...-flatternpackagehierarchy [packagename] 所有重新命名的包都重新打包,并把所有的类移动到packagename包下面。...混淆相关的点就这些了,下面的例子中是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
请尊重他人的劳动成果,转载请注明出处:《Android代码混淆技巧》 因为Android是使用Java开发的,所以开发者可以使用ProGuard对代码进行混淆。...Eclipse+ADT时需要加入-libraryjars libs/…,如果你是使用Android Studio开发的项目则不需要加入libs包中的jar包,这是因为,通过Android Studio进行混淆代码时...,默认已经将 lib目录中的 jar 都已经添加到打包脚本中,所以不需要再次手动添加,否则会出现“ java.io.IOException: The same input jar is specified...################common############### -keep class com.jph.android.entity.** { *; } #实体类不参与混淆 -keep class...com.jph.android.view.** { *; } #自定义控件不参与混淆 ################baidu map############### -libraryjars libs
【混淆时不会产生形形色色的类名 】 -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...说到这里我们需要对Android打包的原理有一个简单的了解,首先来看一下在Proguard帮助文档中给出了一个Proguard工作流程图 ?...Proguard按如下流程进行打包: Input jars、Library jars-shrink->Shrunk code-optimize->Optim.code-obfuscate->Obfusc.code-preverify...public class * extends android.app.Fragment 混淆注意事项 混淆必须对项目不造成任何崩溃问题。...打包时忽略警告 当在导出时,发现很多could not reference class之类的warning信息,如果确认app运行中和那些引用没有什么关系的话,就可以添加-dontwarn标签,就不会在提示这些
文章目录 一、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 混淆效果
大家看到了,有两个混淆文件,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异常
领取专属 10元无门槛券
手把手带您无忧上云