德必信生活网

您现在的位置是:首页 > 生活资讯 > 正文

生活资讯

android代码混淆(Android代码混淆技术总结)

阿信2023-04-12生活资讯70

今天给各位分享android代码混淆的知识,其中也会对Android代码混淆技术总结进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

android 混淆 什么意思

Android代码混淆,是为了你的apk被他人反编译之后拿到源码,如果你混淆了,那反编译后的apk所有的java类都被改成了a.java/c.java之类的文兄链山件名,类里面的属性也变成abc之类的了,想拿到你的源码唤如就不可能了,直接在gradle(app)文件的android节点下加上下边代码。

buildTypes {

  羡中  release {

        minifyEnabled false

        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

    }

}

Android中不能做代码混淆的程序有哪些?

常见的不能混淆的AndroidCodeAndroid 程序 ,下面这样代码混淆的时候要注意保留。\x0d\x0a\x0d\x0aAndroid系虚虚嫌统组件,系统组件有固定的方法被系统调用。\x0d\x0a\x0d\x0a被Android Resource 文件引用到的。名字已经固定,也不能混淆,比如自定义的View 。\x0d\x0a\x0d\x0aAndroid Parcelable ,需要使用android 序列化的。\x0d\x0a\x0d\x0a其他Anroid 官誉尺方建议 不混淆的,如\x0d\x0a\x0d\x0aandroid.app.backup.BackupAgentHelper\x0d\x0aandroid.preference.Preference\x0d\x0acom.android.vending.licensing.ILicensingService\x0d\x0aJava序列化方法,系统序列化需要固定的方法。\x0d\x0a\x0d\x0a枚举 ,系统需要处理枚举的固定方法。\x0d\x0a\x0d\x0a本地方法,不能修改本地方法名\x0d\x0a\x0d\x0aannotations 注释\x0d\x0a\x0d\x0a 差手 数据库驱动\x0d\x0a\x0d\x0a有些resource 文件\x0d\x0a\x0d\x0a用到反射的地方

什么是代码混淆?andriod和android-studio工程如何启用代码混淆功能

代码混淆有两种重要功能。其一,混淆代码。其二,优化代码。

进行代码混淆的程序被称为代码混淆器(混淆工具)。进行代码混淆的意义主要在于对代码进行一定程度的加密。

在android 2.3之裂薯后,sdk中就已经集成了混淆器proguard(目录在sdk\tools\proguard),所以我们可以很方便的直接在工程中开启代码混淆。

eclipse android工程开启混淆功能,我们需要手动在项目文件.properties(我的是project.properties文件)中添加下面的代码

# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

某些方式创建的项目中可能已经有如上两行了,只是默认被注释掉了,只要把proguard.config这一行解注亩源友释就好了。这样代码混淆功能就开启了,在打迅槐签名包时,项目会自动进行代码混淆。

android 混淆

其实不要混淆的主旨就在于混淆会改变方法的名字,类的名字,但是对于外部的一些引用是通过名字找到对应的方法,类,这些可能是通过string找到方法,类,但是string里的字段是不会进行混淆,所以还是会保留原来的名字,这样混淆过后通过原来的名字去找混淆后的名字,是肯定找不到,所以就会报出nosuchfileException,(对于gson,反射,jsbridge,第三方库都是这个原因),至于说枚举类型,我还暂时没懂 为什么,还望共同学习,一起成长。

文章是读了两篇博客写出来,也是自己总结,消化成自己的知识了,若有什么错误的地方,还望指出,相信读了这两篇文章之后你也会懂混淆,一个是如何混淆,一个是哪些该混淆,为什么不能混淆

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

-keep class * implements Android.os.Parcelable { # 保持Parcelable不被混淆 public static final Android.os.Parcelable$Creator *; }

发布一款应用除了设minifyEnabled为ture,你也应该设置zipAlignEnabled为true,像Google Play强制要求开发者上传的应用必须是经过zipAlign的,zipAlign可以让安装包中的资源按4字节对齐,这样可以减少应用在运行时的内存消耗。

原文:

其实不要混淆的主旨就在于混淆会改变方法的名字,类的名字,但是对于外部的一些引用是通过名字找到对应的方法,类,这些可能是通过string找到方法,类,但是string里的字段是不会进行混淆,所以还是会保留原来的名字,这样混淆过后通过原来的名字去找混淆后的名字,是肯定找不到,所梁宴以就会报出nosuchfileException,(对于gson,反射,jsbridge,第三方库都是这个原因),至于说枚举类型,我还暂时没懂 为什么,还望共同学习,一起成长。

文章是读了两篇博客写出来,也是自己总结,消化成自己的知识了,若有什么错误的地方,还望指出,相信读了这两篇文章之后你也会懂带和混淆,一个是如何混淆,橡行银一个是哪些该混淆,为什么不能混淆

关于android代码混淆和Android代码混淆技术总结的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。