当前位置:首页 > 行业动态 > 正文

Android常用三方库混淆规则整理,如何有效保护代码安全?

Android常用三方库混淆规则整理包括ProGuard配置,保留类名、字段名、方法名等,避免反射调用失败。

Android常用三方库混淆规则整理

Android常用三方库混淆规则整理,如何有效保护代码安全?  第1张

一、引言

在Android开发中,使用各种第三方库可以极大地提高开发效率和功能丰富性,为了保护代码安全和减小应用体积,我们需要对这些第三方库进行混淆处理,本文将系统整理一些常用的三方库混淆规则,帮助开发者更好地进行混淆配置。

二、基本指令

在进行混淆之前,首先需要了解一些基本的ProGuard指令:

optimizationpasses 5:指定优化次数为5次。

dontusemixedcaseclassnames:不使用混合大小写类名。

dontskipnonpubliclibraryclasses:不跳过非公共库类。

ignorewarnings:忽略警告信息。

dontpreverify:不进行预先验证。

verbose:详细输出。

printmapping proguardMapping.txt:打印映射文件。

optimizations !code/simplification/cast,!field/*,!class/merging/:关闭代码简化、字段优化和类合并优化。

keepattributes *Annotation*,InnerClasses:保持注释和内部类属性。

renamesourcefileattribute SourceFile:重命名源文件属性。

keepattributes SourceFile,LineNumberTable:保持源文件和行号表属性。

三、Android相关组件混淆规则

对于Android相关的组件,如Activity、Service、BroadcastReceiver等,通常需要保持其不被混淆,以确保应用正常运行,以下是一些常见的Android组件混淆规则:

-keep public class * extends android.support.v7.app.AppCompatActivity

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

对于包含native方法的类和实现Parcelable、Serializable接口的类,也需要特殊处理:

-keepclasseswithmembernames class * { native <methods>; }

-keepclassmembers class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; }

-keepclassmembers class * implements java.io.Serializable { ... }

四、常见三方库混淆规则

Gson库

Gson是一个用于在Java对象和JSON数据之间进行转换的库,以下是Gson库的混淆规则示例:

-keep class com.google.gson.** { *; }

-keepclassmembers class com.google.gson.** { *; }

这些规则将保持Gson库的所有类和类成员不被混淆。

OkHttp库

OkHttp是一个用于进行网络请求的库,以下是OkHttp库的混淆规则示例:

-dontwarn okhttp3.

-keep class okhttp3.** { *; }

-keep interface okhttp3.** { *; }

这些规则将保持OkHttp库的所有类和接口不被混淆,并忽略警告信息。

友盟统计

友盟统计是一款移动应用统计分析工具,以下是友盟统计的混淆规则示例:

-keep class com.umeng.** {*;}

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

-keepclassmembers enum * { public static[] values(); public static valueOf(java.lang.String); }

-keep public class [您的应用包名].R$*{ public static final int *; }。

微信

微信开放SDK是腾讯公司为开发者提供的一套开发工具包,以下是微信开放SDK的混淆规则示例:

-keep class com.tencent.mm.opensdk.** { *; }

-keep class com.tencent.wxop.** { *; }。

五、WebView相关混淆规则

对于使用WebView的应用程序,如果涉及到JavaScript接口的调用,还需要添加以下混淆规则:

-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); }。

六、归纳

本文整理了Android常用三方库的混淆规则,包括基本指令、Android相关组件、常见三方库(如Gson、OkHttp、友盟统计、微信)以及WebView相关的混淆规则,通过合理配置这些混淆规则,可以有效保护代码安全和减小应用体积,希望本文能对开发者在进行混淆配置时提供有益的参考。

各位小伙伴们,我刚刚为大家分享了有关“Android常用三方库混淆规则整理”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!

0