Intellij idea 和android studio 代码给混淆

Intellij idea 和android studio 代码给混淆

一、指令说明-optimizationpasses 5          # 指定代码的压缩级别
-dontusemixedcaseclassnames   # 是否使用大小写混合
-dontpreverify           # 混淆时是否做预校验
-verbose                # 混淆时是否记录日志

-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*  # 混淆时所采用的算法

-keep public class * extends android.app.Activity      # 保持哪些类不被混淆
-keep public class * extends android.app.Application   # 保持哪些类不被混淆
-keep public class * extends android.app.Service       # 保持哪些类不被混淆
-keep public class * extends android.content.BroadcastReceiver  # 保持哪些类不被混淆
-keep public class * extends android.content.ContentProvider    # 保持哪些类不被混淆
-keep public class * extends android.app.backup.BackupAgentHelper # 保持哪些类不被混淆
-keep public class * extends android.preference.Preference        # 保持哪些类不被混淆
-keep public class com.android.vending.licensing.ILicensingService    # 保持哪些类不被混淆

-keepclasseswithmembernames class * {  # 保持 native 方法不被混淆
    native <methods>;
}
-keepclasseswithmembers class * {   # 保持自定义控件类不被混淆
    public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {# 保持自定义控件类不被混淆
    public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.app.Activity { # 保持自定义控件类不被混淆
    public void *(android.view.View);
}
-keepclassmembers enum * {     # 保持枚举 enum 类不被混淆
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
-keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆
    public static final android.os.Parcelable$Creator *;
}

二、混淆实例

1、在proguard-project.txt里面配置混淆后;

2、在project.properties中添加proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

3.混淆实例参考

-optimizationpasses 5-dontusemixedcaseclassnames-dontskipnonpubliclibraryclasses-dontskipnonpubliclibraryclassmembers-dontpreverify-ignorewarnings-verbose-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*

-dontwarn android.support.**-dontwarn com.handmark.**-dontwarn android.webkit.WebView

-keepclassmembers class youmengyou.bean.** {public <fields>;private <fields>;public <init>();public <init>(org.json.JSONObject);*;}

#保持 native 方法不被混淆-keepclasseswithmembernames class * {native <methods>;}

 #保持自定义控件类不被混淆-keepclasseswithmembers class * {public <init>(android.content.Context, android.util.AttributeSet);}

 #保持自定义控件类不被混淆-keepclasseswithmembers class * {public <init>(android.content.Context, android.util.AttributeSet, int);}

 #保持自定义控件类不被混淆-keepclassmembers class * extends android.app.Activity {public void *(android.view.View);}

#保持枚举类不被混淆-keepclassmembers enum * {    public static **[] values();    public static ** valueOf(java.lang.String);}

-keep class * implements android.os.Parcelable {public static final android.os.Parcelable$Creator *;}-keep public class * extends android.view.View {    public <init>(android.content.Context);    public <init>(android.content.Context, android.util.AttributeSet);    public <init>(android.content.Context, android.util.AttributeSet, int);    public void set*(...);}-keepclassmembers class **.R$* {    public static <fields>;    public static final int *;}-keepnames class * implements java.io.Serializable-keepclassmembers class * implements java.io.Serializable {   static final long serialVersionUID;   private static final java.io.ObjectStreamField[] serialPersistentFields;   !static !transient <fields>;   private void writeObject(java.io.ObjectOutputStream);   private void readObject(java.io.ObjectInputStream);   java.lang.Object writeReplace();   java.lang.Object readResolve();}-keepattributes Exceptions,InnerClasses,Signature-keepattributes *Annotation*-keepattributes SourceFile,LineNumberTable

-keep public class * extends android.app.Activity-keep public class * extends android.app.Application-keep public class * extends android.app.IntentService-keep public class * extends android.app.Service-keep public class * extends android.app.backup.BackupAgentHelper-keep public class * extends android.content.BroadcastReceiver-keep public class * extends android.content.ContentProvider-keep public class * extends android.preference.Preference-keep public class com.android.vending.licensing.ILicensingService-keep public class * extends android.widget.LinearLayout-keep public class * extends android.widget.FrameLayout-keep public class * extends android.widget.CheckBox-keep class android.** { *; }-keep public class javax.**-keep class org.** { *; }-keep class android.support.v4.** {*;}-keep class android.support.v4.app.** { *; }-keep class android.support.v4.view.** { *; }-keep public class * extends android.support.v4.**-keep public class android.webkit.**

#加解密#-keep public class com.jfw.utils.ThreeDES

-keep interface android.support.v4.app.** { *; }#下拉刷新-keep class com.handmark.** { *; }

三、最后一步,打包、签名

以前总以为Intellij idea 和android studio 在proguard-project.txt里面设置以后,在编译的时候就直接把代码给混淆了,后面自己反编译才发现,什么都混淆,原来还有个操作没做,需要在Generate Signed APK (签名)的时候勾选上Run ProGuard 才行。

时间: 2024-10-02 03:50:27

Intellij idea 和android studio 代码给混淆的相关文章

Android Studio 代码混淆(你真的会混淆吗)

一.前言 今天要打包新产品,突然忘了混淆的参数是怎么写的了,虽然之前也混淆过,可是具体配置的参数代码有些记不起来了,因此决定花点时间写篇博客记录一下,方便以后查找和自己的记忆. 二.Android Studio 代码混淆基本配置 在工程目录下,找到 proguard-rules.pro 文件,它就是你要进行编写混淆配置的文件,在这个文件中编写混淆规则 当然,在这之前,还需要在你 module 的 build.gradle 文件中引用该混淆文件: 上面中的 proguard-android.txt

android studio 代码混淆如何忽略第三方jar包

最近在打包混淆时,遇到一个问题,混淆编译都不出错,运行出错,一般遇到这种问题,肯定是在运行的地方有代码被混淆了,经过错误排查,发现是程序中用到第三方的jar包的方法出现问题了,原来android studio混淆打包时把第三方的jar包给混淆了. 于是想这个问题很简单,保持jar包不混淆就好,于是直接在app目录下的proguard-rules.pro(或者proguard-rules.txt)混淆规则文件直接-libraryjars libs/xx.jar避免混淆.但是却引出了另一个错误: E

Android Studio代码着色插件

Android Studio代码着色插件 前言:半个多月没写博客了,放了个假期,这人才缓过来神,懒的啥都不想干,可算是明白一句话的意思了:玩物丧志啊!好在公司项目赶的紧,不想干活都不行,强行撸上正轨-- 正因为夜以继日的Coding赶模块,最近感觉眼睛干涩,眼圈红肿,看着那些颜色一层不变的abc,心里莫名的冒火,故有了本篇博文.还是建议大家敲一会abc后,起来走动走动,眼睛看看远处,让眼圈周围血液循环循环.不要像本屌,昨天回家路上买瓶水,付账时老板娘女儿问,你是不是搞IT的 ?!  ---- 此

Android Studio代码自动检测错误提示

Android Studio的代码自动检测的错误提示方式感觉有点奇葩,和Eclipse差别很大,Eclipse检测到某个资源文件找不到或者错误,都会在Project中对应的文件前面打叉,但是Android Studio不用这种方式,所以估计你刚开始找半天找不到错误提示到底在哪?这个错误提示的方式是直接进行了整理归类,不像Eclipse在对应的文件前打叉显示.那如何打开错误提示的列表,如下图: 做个补充,可能很多人会找不到Message在哪,其实你只要选择Build,然后把工程clean或者reb

Android Studio 代码混淆

新建一个项目,Android Studio默认关闭代码混淆开关,在build.gradle文件中,如下图所示的minifyEnabled 开关,因此如果需要混淆代码,需将false改为true,然后在文件proguard-rules.pro添加具体混淆规则. 自己的build.gradle文件的buildTypes部分 buildTypes { debug { buildConfigField "boolean", "LOG_DEBUG", "true&q

Android Studio代码混淆插件

之前给公司的App添加代码混淆,在代码的混淆过程也遇到了不少的问题,再加上最近学习了一下Android Studio插件的开发,所以就开发一个代码混淆插件方便项目的代码混淆. 截图 第三方库列表清单 目前插件的后台已集成了如下图的第三方开源库的代码混淆以及基本的代码混淆,还在努力地添加中,也欢迎大家通过new issue提交列表中没有的第三方开源库混淆代码.(你认为微不足道的事情,也许可以帮到别人的大忙~) 使用 下载AndroidProGuard插件并安装重启.download 在菜单栏的Ed

Android Studio代码自动提示无效(not available in Power Save mode)

针对一位博友提的问题,我这边写出来,估计还是很多人会碰到这个问题,但是不知道如何解决的. 就是在设置了代码自动提示功能后,发现不生效的,如何设置代码自动提示请戳这:Android Studio如何设置代码自动提示. 不生效的原因是因为你AS设置成了省电模式,设置成省电模式了的话,AS会禁掉一些辅助功能,达到省电的目的.所以代码自动提示也被禁掉了. 要修改回来的话,通过File选项,然后倒数第二项:Power Save Mode前面的勾点掉就可以了.

Android Studio代码调试大全

http://blog.csdn.net/dd864140130/article/details/51560664 Android Studio目前已经成为开发android的主要工具,用熟了可谓相当顺手.作为开发者,调试并发现bug,进而解决,可是我们的看家本领.正所谓,工欲善其事必先利其器,和其他开发工具一样,如Eclipse.Idea,Android Studio也为我们提供了强大的调试技巧,今天我们就来看看Android Studio中有关调试的技巧. 首先,来看看Android stu

一步一步实现android studio代码上传到github。

本文只注重代码上传能成功就好,不解释什么是git什么事github,git有什么优势. 1,先创建一个android应用, 第二步:创建github账户 和 安装git.网上的文章多如牛毛.唯一要说的就是记住安装目录. 第三步:android studio中配置git和github账户. 有了上面两个图就说明离成功不远了. 第四步:android studio中点击VCS--Import into version control--share project on github,接下来会出现 内