Android代码混淆常见配置[通俗易懂]

Android代码混淆常见配置[通俗易懂]Android代码混淆常见配置1.manifest中注册的都不能混淆,如果混淆了就找不到了,所以一下类不能被混淆,一般保持原样。-keeppublicclass*extendsandroid.app.Activity-keeppublicclass*extendsandroid.app.Application -keeppublicclass*exten

大家好,又见面了,我是你们的朋友全栈君。

Android代码混淆常见配置

1.manifest中注册的都不能混淆,如果混淆了就找不到了,所以一下类不能被混淆,一般保持原样。

-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

keep就是 告诉proguard不用混淆这个类

2.第三方包不能混淆

  找到应用中引入的包

Android代码混淆常见配置[通俗易懂]

查看包的包名;

Android代码混淆常见配置[通俗易懂]

    -libraryjars libs/android-support-v4.jar

  -dontwarn android.support.v4.**

  -keep class android.support.v4.** { }

-libraryjars指明lib包的在工程中的路径,而

-dontwarn android.support.v4.** 不要警告找不到android.support.v4.** { }这个包里面的类的相关引用,防止可接受警告的出现影响到程序的运行。

-keep class android.support.v4.** { *; }保持第三方库中的类不混淆

4.引入.so库,不然混淆后就无法找到

Android代码混淆常见配置[通俗易懂]

-libraryjars libs/armeabi/libcapscreen.so
  -libraryjars libs/armeabi/libencrypt.so
  -libraryjars libs/armeabi/libfile.so

5.实体类、反射R文件不能混淆

#过滤R文件的混淆: -keep class **.R$* { *;

}

4.JNI不能混淆

其他不能被混淆的类有:

# 保持 native 方法不被混淆

keepclasseswithmembernames class * {

native;

}

# 保持自定义控件类不被混淆

keepclasseswithmembers class * {

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

}

# 保持自定义控件类不被混淆

keepclasseswithmembers class * {

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

# 保持自定义控件类不被混淆

keepclassmembers class * extends android.app.Activity {

public void *(android.view.View);

}

# 保持枚举 enum 类不被混淆

keepclassmembers enum * {

public static **[] values();

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

}

# 保持 Parcelable 不被混淆

-keep class * implements android.os.Parcelable {

public static final android.os.Parcelable$Creator *;

}

6.当混淆运行结束后会产生以下文件:

Android代码混淆常见配置[通俗易懂]

dump.txt:

描述.apk文件中所有类文件的内部结构

mapping.txt:

列出原始类的方法、字段与混淆后的代码间的映射,这个文件比较重要,如果你的代码混淆后会产生bug的话,log提示中是混淆后的代码,希望定位到源代码的话就可以根据mapping.txt反推。

sends.txt:

列出了未被混淆的类和成员

usage.txt

列出了在apk中删除的代码


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139353.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 学习PetShop3.0(4)购物车

    学习PetShop3.0(4)购物车终于到购物车了,在看这个之前应该已经明白了第三篇的那个模型,这样购物车基本也就明白了。来看一下ShoppingCart.aspx这个页。当你看好了一个宠物,比如可爱的GoldenRetriever,嘿嘿,那就点addtocart按钮,这时就会跳到ShoppingCart.aspx,url里带了这个宠物的id号,根据该id号程序将该宠物放到cart里面。然后你可以再去挑别的宠物,比如一只猫(……

    2022年10月16日
    4
  • maven 环境变量的配置「建议收藏」

    maven 环境变量的配置「建议收藏」我的电脑是win10_64位的。一、安装,我使用的是免安装版的,直接解压缩就可以使用。二、配置环境变量。  1.打开环境变量配置。右键计算机→属性→高级系统设置→高级→环境变量,在系统变量中配置。  2.配置MAVEN_HOME。在系统变量中新建,变量名MAVEN_HOME,变量值,maven文件夹路径,我的路径是F:\Wab\资料\maven\资料\apach…

    2022年4月19日
    54
  • 比特币挖矿客户端_IPFS挖矿与比特币挖矿有什么区别?IPFS和比特币之间的爱情故事!…[通俗易懂]

    IPFS挖矿与比特币挖矿有什么区别?IPFS和比特币之间的爱情故事!  文件币主网启用后,每个人都对文件币充满热情,无论是行业人士还是非行业人士。  但是,许多人不熟悉文件硬币挖掘的原理。因此,我认为文件硬币挖掘类似于比特币挖掘。实际上,以前的两个采矿原理有很大不同。我今天会解释。   IPFS挖矿与比特币挖矿有什么区别?IPFS和比特币之间的爱情故事…

    2022年4月14日
    55
  • 接口测试面试题及答案(最新java面试题及答案)

    接口测试面试题及答案(最新java面试题及答案)Http与Https的区别:Http与Https的区别:HTTP的URL以http:// 开头,而HTTPS的URL以https:// 开头HTTP是不安全的,而HTTPS是安全的HTTP标准端口是80,而HTTPS的标准端口是443在OSI网络模型中,HTTP工作于应用层,而HTTPS的安全传输机制工作在传输层HTTP无法加密,而HTTPS对传输的数据进行加密HTT…

    2022年4月18日
    47
  • Docker针对运行JAVA程序的优化

    Docker针对运行JAVA程序的优化

    2021年5月30日
    119
  • 如何用命令行编译、运行第一个java程序(Hello World!)[通俗易懂]

    如何用命令行编译、运行第一个java程序(Hello World!)[通俗易懂]一、什么是命令行(Windows下)?     命令行(CommandProcessor)(CMD)是在OS/2,WindowsCE与WindowsNT平台为基础的操作系统(包括Windows2000,WindowsXP,WindowsVista,WindowsServer2003,Windows7,Windows8,Windows8.1,Window

    2022年7月8日
    20

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号