Android之app混淆深入分析-层层解析解决开发中痛点

设置混淆的压缩比率 0 ~ 7

-optimizationpasses 5

混淆时不使用大小写混合,混淆后的类名为小写

-dontusemixedcaseclassnames

指定不去忽略非公共库的类

-dontskipnonpubliclibraryclasses

指定不去忽略非公共库的成员

-dontskipnonpubliclibraryclassmembers

混淆时不做预校验

-dontpreverify

混淆时不记录日志

-verbose

忽略警告

-ignorewarning

代码优化

-dontshrink

不优化输入的类文件

-dontoptimize

保留注解不混淆

-keepattributes Annotation,InnerClasses

避免混淆泛型

-keepattributes Signature

保留代码行号,方便异常信息的追踪

-keepattributes SourceFile,LineNumberTable

混淆采用的算法

-optimizations !code/simplification/cast,!field/,!class/merging/

dump.txt文件列出apk包内所有class的内部结构

-dump class_files.txt

seeds.txt文件列出未混淆的类和成员

-printseeds seeds.txt

usage.txt文件列出从apk中删除的代码

-printusage unused.txt

mapping.txt文件列出混淆前后的映射

-printmapping mapping.txt

不需混淆的Android类

support design库、support下的所有类及其内部类、Android类

-keep public class * extends android.app.Fragment

-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.preference.Preference

-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.** {*;}

-dontwarn android.support.**

-keep interface android.support.** { *; }

-keep class androidx.** {*;}

-keep interface androidx.** {*;}

-keep public class * extends androidx.**

-dontwarn androidx.**

-dontwarn android.support.design.**

-keep class android.support.design.** { *; }

-keep interface android.support.design.** { *; }

-keep public class android.support.design.R$* { *; }

-keep class com.google.android.material.** {*;}

-dontwarn com.google.android.material.**

-dontnote com.google.android.material.**

避免混淆自定义控件类的 get/set 方法和构造函数

-keep public class * extends android.view.View{

*** get*();

void set*(***);

public (android.content.Context);

public (android.content.Context, android.util.AttributeSet);

public (android.content.Context, android.util.AttributeSet, int);

}

关闭 Log日志

-assumenosideeffects class android.util.Log {

public static boolean isLoggable(java.lang.String, int);

public static int v(…);

public static int i(…);

public static int w(…);

public static int d(…);

public static int e(…);

}

避免资源混淆

-keep class *.R$ {*;}

避免layout中onclick方法

-keepclassmembers class * extends android.app.Activity{

public void *(android.view.View);

}

避免混淆枚举类

-keepclassmembers enum * {

public static **[] values();

public static ** valueOf(java.lang.String);

}

Natvie 方法不混淆

-keepclasseswithmembernames class * {

native ;

}

避免Parcelable混淆和Serializable接口

-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 ;

private void writeObject(java.io.ObjectOutputStream);

private void readObject(java.io.ObjectInputStream);

java.lang.Object writeReplace();

java.lang.Object readResolve();

}

WebView混淆配置

尾声

对于很多初中级Android工程师而言,想要提升技能,往往是自己摸索成长,不成体系的学习效果低效漫长且无助。 整理的这些架构技术希望对Android开发的朋友们有所参考以及少走弯路,本文的重点是你有没有收获与成长,其余的都不重要,希望读者们能谨记这一点。

最后想要拿高薪实现技术提升薪水得到质的飞跃。最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以为了大家能够顺利进阶中高级、架构师,我特地为大家准备了一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。

当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的。

进阶学习视频

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)


《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
进阶学习视频**

[外链图片转存中…(img-rQm2adtK-1714486292351)]

附上:我们之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

[外链图片转存中…(img-ItMQDWkM-1714486292353)]
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

  • 22
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值