Android日志:代码混淆,使用说明

上一篇介绍了Google官方的一些解释,这一篇主要介绍如何实战(Eclipse开发)使用Googel提供的这个工具.如对代码混淆的概念不是很了解的建议先看上一篇--Android日志:代码混淆,官方文档介绍-----来自Google最新文档

主要先简单的介绍三个主要文件,在sdk下的proguard里面:  我的SDK路径为H:\Android\android-sdk-windows\tools\proguard

proguard-android.txt//系统配置好一些默认选项,考虑的比较详细,最好不要修改

proguard-android-optimize.txt//系统配置好一些默认选项,考虑的比较详细,最好不要修改

proguard-project.txt//加入一些保持,或者说不希望被混淆的包、类或者方法等

如何使用:

每一个Eclipse项目生成都会生成两个文件,如果要混淆必须配置这两个:

proguard-project.txt

project.properties

里面的英文介绍就不多少了,直接操作

步骤一:打开project.properties

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

去掉这一句前面的#,就相当于一个开关,告诉编译器,我要混淆.如果没有用到以下内容,就可以直接打包.系统会自动帮你混淆.但是大部分程序都用到了第三方包,所以我们的自己配置 proguard-project.txt这个文件.请看步骤二.

注意: 只有在生成release版本的apk时,混淆配置才会起作用,debug版本的apk不会进行混淆。

需要自己配置的包括:

      • 只在 AndroidManifest.xml 引用的类
      • 从JNI调用的方法
      • 动态引用的字段和方法
      • 第三方包

默认的proguard.cfg文件试图掩盖一般情况下,但你可能会遇到的异常,如ClassNotFoundException的,这发生在ProGuard的除掉整个类,你的应用程序调用。

步骤二:配置proguard-project.txt,加入需要保持的.jar包和以上需要配置的内容

# Add any project specific keep options here:

在这一句话下面,添加配置内容

# If your project uses WebView with JS, uncomment the following

如果用到WebView with JS,打开一下五个#

# and specify the fully qualified class name to the JavaScript interface

# class:

#-keepclassmembers class fqcn.of.javascript.interface.for.webview {

#   public *;

#}

步骤三:在步骤二中添加配置内容的地方,手动天骄配置,一般以"keep"开头.

添加第三方依赖包

例如:添加android-support-v4.jar依赖包

    -libraryjars

    libs/android-support-v4.jar

    -dontwarn

    android.support.v4.**{*;}

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

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

            

    不混淆某个类的子类,某个接口的实现

例如:不混淆com.example.Test类的子类

        -keep public class extends com.example.Test

例如:不混淆com.example.TestInterface的实现

-keep class * implementscom.example.TestInterface {

    public static final com.example.TestInterface$Creator *;

}

不混淆某个类的特定的函数

            -keepclassmembers class

com.example.Test {

    public void setTestString(java.lang.String);

}

            不混淆某个包所有的类或指定的类

例如,不混淆package com.example下的所有类/接口

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

            例如,不混淆com.example.Test类:

            -keep class com.example.Test { * ; }

            如果希望不混淆某个接口,则把上述命令中的class替换为interface即可。

            不混淆某个类的构造函数

例如:不混淆Test类的构造函数:

-keepclassmembers class

com.example.Test {

    public <init>(int,int);

}

自己在混淆时遇到的问题解决方法(有点困了,就不多写了):

1.尽量不要去混淆实体Modle

2.用到反射的类和方法不要混淆

3.可以运用反编译检查混淆结果,也可以发现问题

时间: 2024-10-21 17:56:35

Android日志:代码混淆,使用说明的相关文章

Android Studio 代码混淆(你真的会混淆吗)

一.前言 今天要打包新产品,突然忘了混淆的参数是怎么写的了,虽然之前也混淆过,可是具体配置的参数代码有些记不起来了,因此决定花点时间写篇博客记录一下,方便以后查找和自己的记忆. 二.Android Studio 代码混淆基本配置 在工程目录下,找到 proguard-rules.pro 文件,它就是你要进行编写混淆配置的文件,在这个文件中编写混淆规则 当然,在这之前,还需要在你 module 的 build.gradle 文件中引用该混淆文件: 上面中的 proguard-android.txt

Android Stuido代码混淆

一.Android Studio 代码混淆基本配置首先我们要在build.gradle里设置 miifyEnabled 里改为true,表示可以混淆 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'  中 proguard-rules.txt 表示系统默认的混淆文件,具体在../sdk/tools/proguard/ 目录下,其中包含了 android 最基本的混淆,一般不需要改动

android studio 代码混淆如何忽略第三方jar包

最近在打包混淆时,遇到一个问题,混淆编译都不出错,运行出错,一般遇到这种问题,肯定是在运行的地方有代码被混淆了,经过错误排查,发现是程序中用到第三方的jar包的方法出现问题了,原来android studio混淆打包时把第三方的jar包给混淆了. 于是想这个问题很简单,保持jar包不混淆就好,于是直接在app目录下的proguard-rules.pro(或者proguard-rules.txt)混淆规则文件直接-libraryjars libs/xx.jar避免混淆.但是却引出了另一个错误: E

Android Studio 代码混淆

新建一个项目,Android Studio默认关闭代码混淆开关,在build.gradle文件中,如下图所示的minifyEnabled 开关,因此如果需要混淆代码,需将false改为true,然后在文件proguard-rules.pro添加具体混淆规则. 自己的build.gradle文件的buildTypes部分 buildTypes { debug { buildConfigField "boolean", "LOG_DEBUG", "true&q

77.Android之代码混淆

转载:http://www.jianshu.com/p/7436a1a32891 简介 作为Android开发者,如果你不想开源你的应用,那么在应用发布前,就需要对代码进行混淆处理,从而让我们代码即使被反编译,也难以阅读.混淆概念虽然容易,但很多初学者也只是网上搜一些成型的混淆规则粘贴进自己项目,并没有对混淆有个深入的理解.本篇文章的目的就是让一个初学者在看完后,能在不进行任何帮助的情况下,独立写出适合自己代码的混淆规则. 说在前面 这里我们直接用Android Studio来说明如何进行混淆,

android 实现代码混淆

对于使用签名的apk,经常使用的反编译之后还是能查看class文件的代码实现.对于反编译可查看个人的博客点击打开链接 使用代码混淆就能是这样的常规反编译失效.很多其它混淆机制见官网http://developer.android.com/guide/developing/tools/proguard.html 1.在build.grandle加入,当中规则写在proguard-rules.pro中.也能够自己定义一个文件,将其取代,比方eclipse经常使用的 proguard-project.

Android proguard代码混淆

之前我写过一篇博客Android APK的反编译和重新打包讲解了APK反编译方面的知识,包括反编译代码.反编译资源.以及重新打包等内容.那么本文我们来学习一下如何防止自己的APK被别人反编译,即代码混淆. 代码混淆并不是让代码无法被反编译,而是将代码中的类.方法.变量等信息进行重命名,将它们改成一些毫无意义的名字,譬如A类的b()方法等.所以说代码混淆可以在不影响程序正常运行的前提下让破解者很头疼,从而大大提升了程序的安全性. 我们的Android项目可以使用Android Studio来创建,

Android Studio代码混淆插件

之前给公司的App添加代码混淆,在代码的混淆过程也遇到了不少的问题,再加上最近学习了一下Android Studio插件的开发,所以就开发一个代码混淆插件方便项目的代码混淆. 截图 第三方库列表清单 目前插件的后台已集成了如下图的第三方开源库的代码混淆以及基本的代码混淆,还在努力地添加中,也欢迎大家通过new issue提交列表中没有的第三方开源库混淆代码.(你认为微不足道的事情,也许可以帮到别人的大忙~) 使用 下载AndroidProGuard插件并安装重启.download 在菜单栏的Ed

Android之——代码混淆

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47376377 Android自身可以实现代码的混淆功能,Android集成了代码混淆的功能,这些功能在Android SDK的tools有个proguard目录,这个目录下就是提供了Andoid代码的混淆功能,我们只需要在Android项目中进行简单的配置即可. 1.proguard.cfg文件 创建Android项目之后,在Android项目根目录下有个proguard.cfg