您当前的位置:首页 > 互联网教程

Android 开发怎样做代码加密或混淆

发布时间:2025-05-14 08:44:35    发布人:远客网络

Android 开发怎样做代码加密或混淆

一、Android 开发怎样做代码加密或混淆

通常来说Proguard对一般用途来说足够了,但是也需要注意一些程序风格,增强proguard的效果。

1、特定类的public函数不做实际的事情,只做简单处理后调用private函数。proguard对会对一些特定类的public函数不做混淆,以便被AndroidManifest.xml和各种layout引用。

2、会被AndroidMinifest.xml和layout引用的类放在浅层的包中,需要隐藏的类放在较深处,以便proguard混淆包名带来好处。如果一个包中有需要不混淆的内容,则整个包名都不会被混淆。

3、将函数根据功能分细切短也会有些益处。当然如果隐藏代码的要求比较高,还是用native好了。

二、android代码混淆以及怎么判断一个apk代码是否被混淆过

java代码编译成二进制class文件,这个class文件也可以反编译成源代码,除了注释外,其他的code基本都可以看到。为了防止重要code被泄露,我们往往需要混淆,即把方法名,变量名,类名,包名等这些java元素的名称改成让人意想不到的名称,这样代码结构就没有变化,还可以运行,但是想弄懂代码的架构却很难。proguard就起到了这样的作用:

一、它可以分析一组class的结构,根据用户的配置,然后把这些class文件中可以混淆的java元素进行混淆

三、对代码进行优化(使用adt插件导出的apk,还进行zipalign优化)

缺省情况下,proguard会混淆所有代码,但是下面几种情况是不能改变java元素的名称,否则就会导致程序出错。

一、用到反射的地方(android中的api常用@hide注释掉,开发者在调用相应的方法时,需要用到反射)

二、当app的代码要依赖于系统的接口时,如被系统代码调用的回调方法,这种方法比较复杂

三、java元素名称是配置文件中配置好的

所以在使用proguard时,我们需要有个配置文件告诉proguard,哪些java元素是不能混淆的。

-dontwarn缺省proguard会检查每一个引用是否正确,但是第三方库里往往有些不会用到的类,没有正确引用,如果不配置的话,系统就会报错。

-keep指定的类和类成员被保留作为入口

-keepclassmembes指定的类成员被保留。

-keepclasswithmembers指定的类和类成员被保留,假如指定的类成员存在的话。

三、关于Android studio 怎么使用代码混淆的问题

1、Android Studio上混淆打包apk方法:

2、//混淆,新版本是ninifyEnabled不再是runproguard

3、//加载默认混淆配置文件及自定义混淆配置

4、proguardFiles getDefaultProguardFile('proguard-android.txt'),'proguard.cfg'

5、设置minifyEnabled true,就会在打包的时候进行代码混淆处理.其中proguard-android.txt不用管,在sdk目录里面,主要是配置了proguard.cfg文件。

6、直接在android studio创建项目不会有这个文件,而是 proguard-rules.pro文件,其实一样的,因为项目是从eclipse迁移过来的,之前在eclipse上混淆是 proguard.cfg文件.