美文网首页
apk混淆以及混淆模板

apk混淆以及混淆模板

作者: 肆无忌惮_c9a2 | 来源:发表于2018-09-29 11:47 被阅读0次

先来一个混淆规则基本模板,可以直接复制粘贴的那种~~

#1.基本指令区(固定)
-optimizationpasses 5
-dontusemixedcaseclassnames
-dontskipnonpubliclibraryclasses
-dontskipnonpubliclibraryclassmembers
-dontpreverify
-verbose
-ignorewarnings
-printmapping proguardMapping.txt
-optimizations !code/simplification/cast,!field/*,!class/merging/*
-keepattributes *Annotation*,InnerClasses
-keepattributes Signature
-keepattributes SourceFile,LineNumberTable

#2.默认保留区(固定)
-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 * extends android.view.View
-keep public class com.android.vending.licensing.ILicensingService

-keep class android.support.** {*;}
-keep public class * extends android.support.v4.**
-keep public class * extends android.support.v7.**
-keep public class * extends android.support.annotation.**

-keep class **.R$* {
 *;
}

-keepclasseswithmembernames class * {
    native <methods>;
}
-keepclassmembers class * extends android.app.Activity{
    public void *(android.view.View);
}
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
-keep public class * extends android.view.View{
    *** get*();
    void set*(***);
    public <init>(android.content.Context);
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclasseswithmembers class * {
    public <init>(android.content.Context, android.util.AttributeSet);
    public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keep class * implements android.os.Parcelable {
  public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class * implements java.io.Serializable {
 static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    !static !transient <fields>;
    !private <fields>;
    !private <methods>;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}
-keepclassmembers class * {
    void *(**On*Event);
    void *(**On*Listener);
}

#3.webview(固定)
-keepclassmembers class fqcn.of.javascript.interface.for.webview {
   public *;
}
-keepclassmembers class * extends android.webkit.webViewClient {
    public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap);
    public boolean *(android.webkit.WebView, java.lang.String);
}
-keepclassmembers class * extends android.webkit.webViewClient {
    public void *(android.webkit.webView, jav.lang.String);
}

需要我们不混淆的代码

以下4项中如果有则必须添加否则可能不能正常运行的
(1)实体类,json解析类,其实就是用到序列化反序列化的类,最好将所有解析类放在一个包下

-keep class com.xx.xx.entity.** { *; }
-keep class com.xx.xx.entity.* { *; }
-keep class com.xx.xx.entity.Aa { *; }

-keep public class * extends com.xx.xx.entity.Aa

(2)第三方jar包,一般三方提供者会给出,去官网找。

(3)与js互相调用的类

(4)反射相关的类和方法

用法

在app的build.gradle中添加

    buildTypes {
        release {
            //正式打包的混淆开关
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        debug {
            //测试打包的混淆开关,debug混淆只有 Build APK 才生效,直接 Run 是无效的
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

相关文章

  • apk混淆以及混淆模板

    先来一个混淆规则基本模板,可以直接复制粘贴的那种~~ 需要我们不混淆的代码 以下4项中如果有则必须添加否则可能不能...

  • APK体积极限压缩优化瘦身

    查看APK结构Build->Analyse Apk 开启代码混淆 混淆模板 minifyEnabled 这个是用来...

  • Android Studio混淆打包

    前两周应业务需要研究了一下混淆打包和sdk混淆技术。在此记录下心得。 1.apk混淆打包 如果要对apk进行混淆,...

  • 优雅的处理 Android 代码混淆 Keep 问题

    为了源码安全以及缩小 APK 体积,Android 应用发布前是必须要进行混淆打包的。而混淆打包并不是全量打包,特...

  • Android实践:使用ProGuard压缩和混淆Apk

    本文主要讨论对apk文件的压缩和混淆中的细节问题以及分析在压缩混淆过程中遇到的问题的原因. ProGuard压缩混...

  • android 混淆规则说明

    1、子Module不能配置混淆,仅仅只能在主Module中配置混淆。2、主Module配置了混淆,打包成apk后,...

  • AS混淆打包错误(java compiler)第零篇:warni

    有时候我们打包apk时会开启混淆,简单做法有时候是这样: 混淆文件我们也会参考官方模板,同时用到了第三方的库也需要...

  • 混淆模板

  • apk混淆经验

    一般正常发不出去的apk都是需要进行混淆打包的,否则太容易被破解了。比如用Android逆向助手这个工作,把apk...

  • Android 代码混淆笔记

    一、为何要混淆? 混淆无非是为了安全,防止Apk被恶意的破解。在使用混淆之后,代码会被无意义名称所代替,例如a、d...

网友评论

      本文标题:apk混淆以及混淆模板

      本文链接:https://www.haomeiwen.com/subject/jumvoftx.html