Android日志:代码混淆,使用说明
2014-11-21 11:27
453 查看
主要先简单的介绍三个主要文件,在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-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依赖包
不混淆某个类的子类,某个接口的实现
例如:不混淆com.example.Test类的子类
例如:不混淆com.example.TestInterface的实现
不混淆某个类的特定的函数
不混淆某个包所有的类或指定的类
例如,不混淆package com.example下的所有类/接口
例如:不混淆Test类的构造函数:
自己在混淆时遇到的问题解决方法(有点困了,就不多写了):
1.尽量不要去混淆实体Modle
2.用到反射的类和方法不要混淆
3.可以运用反编译检查混淆结果,也可以发现问题
欢迎大家访问我的个人网站 萌萌的IT人
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依赖包
-keep
interface
android.support.v4.**{*;}
不混淆某个类的子类,某个接口的实现
例如:不混淆com.example.Test类的子类
-keep
public
class
*
extends
com.example.Test
例如:不混淆com.example.TestInterface的实现
不混淆某个类的特定的函数
-keepclassmembers
class
不混淆某个包所有的类或指定的类
例如,不混淆package com.example下的所有类/接口
-keep
class
com.example.** { * ; }
例如,不混淆com.example.Test类:
-keep
class
com.example.Test { * ; }[/code]
如果希望不混淆某个接口,则把上述命令中的class替换为interface即可。[/code]
不混淆某个类的构造函数[/code]
例如:不混淆Test类的构造函数:
自己在混淆时遇到的问题解决方法(有点困了,就不多写了):
1.尽量不要去混淆实体Modle
2.用到反射的类和方法不要混淆
3.可以运用反编译检查混淆结果,也可以发现问题
欢迎大家访问我的个人网站 萌萌的IT人
相关文章推荐
- Android 项目的代码混淆的使用说明
- Android 代码混淆,Android proguard 使用说明
- android代码混淆的使用说明
- Android 项目的代码混淆,Android proguard 使用说明
- Android 项目的代码混淆,Android proguard 使用说明
- Android 项目的代码混淆,Android proguard 使用说明
- Android 项目的代码混淆,Android proguard 使用说明
- Android 项目的代码混淆,Android proguard 使用说明
- Android 项目的代码混淆,Android proguard 使用说明
- ANDROID使用PROGUARD实现代码混淆
- android使用proguard实现代码混淆
- 关于Android使用proguard进行代码混淆
- Eclipse与Android源码中ProGuard工具的使用(代码混淆)
- Eclipse与Android源码中ProGuard工具的使用--代码混淆
- Eclipse与Android源码中ProGuard工具的使用(代码混淆)
- 使用ant自动化编译、签名、代码混淆Android项目
- 使用ant自动化编译、签名、代码混淆Android项目
- android 使用proguard 代码混淆后,出现异常 Missing type parameter.
- 使用ProGuard混淆Android工程 保护好自己的代码
- 使用proguard混淆android代码