android 混淆文件proguard.cfg

1、ProGuard作用
ProGuard通过删除无用代码,将代码中类名、方法名、属性名用晦涩难懂的名称重命名从而达到代码混淆、压缩和优化的功能,跟JavaScript的混淆压缩类似。
压缩和优化使得编译后apk包更小。
混淆可以保证代码在被反编译后读懂的难度很大,防止逆向工程。这点也是我们在应用发布前需要ProGuard的一大原因。

参考资料: http://www.trinea.cn/android/proguard-use/

如果用eclipse export命令打包,会在<project_root>/proguard文件夹内。其中包含以下文件:

mapping.txt表示混淆前后代码的对照表,这个文件非常重要。如果你的代码混淆后会产生bug的话,log提示中是混淆后的代码,希望定位到源代码的话就可以根据mapping.txt反推。
dump.txt描述apk内所有class文件的内部结构
seeds.txt列出了没有被混淆的类和成员
usage.txt列出了源代码中被删除在apk中不存在的代码

-optimizationpasses 5
-dontusemixedcaseclassnames    【混淆时不会产生形形色色的类名 】
-dontskipnonpubliclibraryclasses  【指定不去忽略非公共的库类。 】
-dontskipnonpubliclibraryclassmembers
-dontpreverify  【不预校验】
-verbose
-dontoptimize
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*  【优化】
-ignorewarnings

-dontwarn android.support.v4.**

-libraryjars libs/gson-2.2.4.jar

-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 class * implements java.io.Serializable.** {*;}   // 这个和下面某个类似,查下有什么不同

-keep class com.sina.weibo.**{*;}
-keep interface com.sina.weibo.**{*;}

-keepattributes *Annotation*,*Exceptions*,Signature

-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {*;}

public protected <methods>;  【所有方法不进行混淆】
}
-keep public class com.asqw.android{
public void Start(java.lang.String); 【对该方法不进行混淆】
}

-keepclasseswithmembernames class * { 【保护指定的类和类的成员的名称,如果所有指定的类成员出席(在压缩步骤之后)】

native <methods>;
}

-keepclasseswithmembers class * { 【保护指定的类和类的成员,但条件是所有指定的类和类成员是要存在。】
public <init>(android.content.Context, android.util.AttributeSet);
}

-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}

-keepclassmembers class * extends android.app.Activity {【保护指定类的成员,如果此类受到保护他们会保护的更好 】
public void *(android.view.View);
}

-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

-keep class * implements android.os.Parcelable {【保护指定的类文件和类的成员】
public static final android.os.Parcelable$Creator *;
}

时间: 2024-09-30 03:57:02

android 混淆文件proguard.cfg的相关文章

android 混淆文件proguard.cfg详解 (转载)

-injars  androidtest.jar[jar包所在地址] -outjars  out[输出地址] -libraryjars    'D:\android-sdk-windows\platforms\android-9\android.jar' [引用的库的jar,用于解析injars所指定的jar类] -optimizationpasses 5-dontusemixedcaseclassnames [混淆时不会产生形形色色的类名 ]-dontskipnonpubliclibraryc

防反编译、混淆文件proguard.cfg与proguard-project.txt详解

在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt. 如果需要对项目进行全局混码,只需要进行一步操作: 将project.properties的中 “#  proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt”的“#”去掉就可以了. 如 果有一些代码不能被混淆,比如需要加入了so文件

Android 混淆文件project.properties和proguard-project.txt

参考文档:http://blog.csdn.net/xueyepiaoling/article/details/8202359 http://glblong.blog.51cto.com/3058613/1263969 在新版本的ADT创建项目时,混码的文件不再是proguard.cfg,而是project.properties和proguard-project.txt. 如果需要对项目进行全局混码,只需要进行一步操作: 将project.properties的中 “#  proguard.co

android 通过添加proguard.cfg文件实现代码混淆

若项目中没有proguard.cfg文件,手动添加 新建文本,输入以下代码 -dontwarn //若项目中导入了第三方jar包,需要添加该行 -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/

关于android混淆文件project.properties和proguard-project.txt详解

一直不明白Android开发中的有些文件的具体作用,后来用到了,具体研究了一下,借鉴了一下网上的资料,最后总结下,方便以后查看! 老版本中有这么个文件default.properties,既然是老版本,已经淘汰了的,就不再深究. 而新版本的ADT创建项目时,混码的文件project.properties和proguard-project.txt. 如果需要对项目进行全局混码,进行如下操作: 将project.properties文件中的 “#  proguard.config=${sdk.dir

Android混淆代码proguard,内存溢出

Android打debug签名包是不进行代码混淆的,直接RUN AS就是debug签名的包 正式发布版本要经过公司key的正式签名,可以通过export或者Android toos导出 项目比较大,打混淆包的时候直接OOM,网上很多人说直接加大eclipse.ini中的-Xmx值,我这么改过后一直不好使 经测试正确的做法是修改Android混淆调用的sdk的bat文件,路径android-sdk-windows\tools\proguard\bin\proguard.bat 修改最后一行为jav

如何解决:新建Android程序的时候发生了找不到 \android-sdk-windows\tools\lib\proguard.cfg文件 的错误

问题概述: 在新建Android程序的时候出现以下错误: 找不到 \android-sdk-windows\tools\lib\proguard.cfg文件 原因: SDK不完整. 解决方法: 方法一 可在 \android-sdk-windows\tools\lib\目录下新建一个proguard.cfg文件 然后添下以下内容: proguard.cfg -optimizationpasses 5-dontusemixedcaseclassnames-dontskipnonpubliclibr

Android ANT脚本打包及混淆文件

http://p.ymt360.com/w/app/wiki/tech/build_apk/ 简介 Android支持使用ANT打包.通过ANT脚本,可以对文件进行编译.打包.安装.联合SVN自动拉取等.并且支持多种方式打包,如debug.release.批量打包等场景.eclipse项目是通过调用SDK提供的ANT脚本build.xml文件进行打包的. 附件是AndroidSDK附带的打包脚本,超详细,可以参考学习下.build.xml(建议使用JDK1.6环境,在之前ANT使用过程中被1.7

Android混淆时出现的proguard returned with error code 1.See console问题

最近使用项目进行Android的混淆处理,工程中加入了多个第三方的jar包,直接使用project.properties中的proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt进行混淆处理,打包APK的时候出现了proguard returned with error code 1.See console,上网查了一下出现这类问题的原因,主要介绍了三种方式,分别是Error: C:/