【doc】http://developer.android.com/tools/help/proguard.html#configuring

以下是简略的内容,如果需要仔细查看相关手册,请点击上述链接。

一、步骤

1、将proguard.cfg文件拷贝到XX工程下;如果新建工程时选择的Android版本是2.3及以上的,创建后工程下就会自带该文件

2、在project.propertites文件中,加入语句:

proguard.config=proguard.cfg

或者

proguard.config=/path/to/proguard.cfg

3、clean工程

4、签名

以上步骤即可完成一定保护代码的作用。

二、例子说明

测试XX.apk反编译获取相关文件,proguard.cfg脚本没有做任何修改

  使用apktool获取res资源文件 dex2jar获取src文件

没有proguard

可以 可以
有proguard 可以 部分类的类名已混淆(a,b…),代码可读性下降

三、文件说明

【参考】http://developer.android.com/tools/help/proguard.html#configuring

ProGuard运行结束后,输出以下文件:

dump.txt          描述.apk文件中所有类文件间的内部结构

mapping.txt     列出了原始的类,方法和字段名与混淆后代码间的映射。这个文件很重要,当你从release版本中收到一个bug报告时,可以用它来翻译被混淆的代码。

seeds.txt     列出了未被混淆的类和成员

usage.txt     列出了从.apk中删除的代码

这些文件放在以下文件夹中:

· Ant:<project_root>/bin/proguard

· Eclipse: <project_root>/proguard

注意:每当你在release模式下编译时,这些文件都会被覆盖重写,当然,是被ProGuard工具生成的最新的文件所覆盖。每次你发布你的程序时,都应该保存一份,为了将来能够解码bug报告。

四、脚本部分说明

【参考】http://blog.csdn.net/laoyao_moyan/article/details/7353768

-injars  androidtest.jar【jar包所在地址】 
-outjars  out【输出地址】

-libraryjars    'D:\android-sdk-windows\platforms\android-9\android.jar' 【引用的库的jar,用于解析injars所指定的jar类】

-optimizationpasses 5
-dontusemixedcaseclassnames 【混淆时不会产生形形色色的类名 】
-dontskipnonpubliclibraryclasses 【指定不去忽略非公共的库类。 】
-dontpreverify 【不预校验】

-verbose
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 【优化】

-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 public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService

-keep public abstract interface com.asqw.android.Listener{
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 *;
}

五、其他

1、过滤反射R文件的混淆

-keep class **.R$* {   *;  }

2、过滤第三方包的混淆

-keep class packagename.** {*;}(其中packagename为第三方包的包名)

转载于:https://www.cnblogs.com/Amandaliu/archive/2013/04/25/3042914.html

【Android】proguard混淆代码相关推荐

  1. [转载]关于Android ProGuard混淆学习记录

    转自:http://www.cnitblog.com/zouzheng/archive/2011/01/12/72630.aspx 前段时间把Android的工程用Ant Build搞定后,现在需要把 ...

  2. Proguard混淆代码(1)

    [意义]混淆代码,可以加大别人反编译的难度,从而最大化的保护自己的代码安全. [场景]我写了一个发短信的程序,回调给游戏一个发短信是否成功的参数,如果成功,游戏就给用户加道具.本意:只想暴露给游戏 d ...

  3. Android之混淆代码总结

    为了防止自己的劳动成果被别人窃取,混淆代码能有效防止被反编译,下面来总结以下混淆代码的步骤: 1. 大家也许都注意到新建一个工程会看到项目下边有这样proguard-project.txt一个文件,这 ...

  4. android aidl混淆代码,Android代码混淆

    什么是代码混淆 代码混淆就是将代码中的各种元素,如变量,方法,类和包的名字改写成无意义的名字,增加项目反编译后被读懂的难度. Android代码混淆使用ProGuard工具,ProGuard是一个压缩 ...

  5. android studio防止反编译,防反编译利器-Android studio混淆代码压缩apk包体积

    前言 打包混淆对初学者小冷来说是很抗拒的,刚开始我只是知道在build.gradle文件 minifyEnabled下设置为true,可是proguard-rules.pro文件里面什么都没有,就这样 ...

  6. ProGuard混淆代码

    关于ProGuard ProGuard是一款开源的代码混淆工具,不仅能够混淆代码,而且可以进行代码的压缩和优化等,这里只关注其混淆的功能. 代码混淆的原理就是,删除无用代码,使用难懂的类名,方法名,和 ...

  7. Android Proguard混淆详解

    介绍 Proguard是一款Java工具,具有收缩,优化,混淆,预验证功能. 当构建版本时会连续执行这四个步骤: 1.收缩(shrinker): 检测并删除无用的类,函数,属性,和域,以达到减小包体积 ...

  8. java proguard_java防止反编译之proguard混淆代码

    从eclipse中导出工程的jar包(这个就不详细说了) 安装proguard后打开bin目录下的proguardgui.bat启动proguard如下图所示: 点击Input/Output,设置输入 ...

  9. android 代码签名apk,[Android]混淆代码后生成带签名的apk

    Android从2.3的SDK开始,将ProGuard混淆代码的功能加入了进来. 我们可以从android sdk的tools目录下看到有一个proguard目录.说明具有了代码混淆的功能. 至于如何 ...

  10. ProGuard混淆Java项目的核心代码

    开发需求 众所周知,class文件可以进行反编译从而泄露核心代码,为了保护知识产权,需要对代码进行混淆再进行打包.现阶段采用proguard去做一个基本的混淆,使代码的可读性降低. 操作步骤 [模块目 ...

最新文章

  1. 流程工业数字孪生关键技术探讨
  2. MySpaces性能提高的过程(转)
  3. ubuntu11.10安装mysql+handlersocket
  4. 【转】WebSocket初探
  5. python json库安装_python怎么安装requests库
  6. EMUI10还有哪些看点?分布式技术能力、开放与工具链...
  7. jwt token 附加用户信息_获取jwt(json web token)中存储的用户信息
  8. Mysql 异步复制
  9. Vue使用v-for绑定两个属性拼接渲染界面
  10. r语言ggplot画两条曲线_如何用R语言绘制生存曲线?
  11. bootice添加黑苹果引导_Clover Configurator黑苹果 Clover 引导配置工具
  12. matlab损耗函数曲线,MATLAB 损失函数画图
  13. 【2022 李宏毅】机器学习导论
  14. 火狐上如何使用谷歌翻译插件_将Google翻译功能添加到Firefox
  15. 工作遇到问题:通过命令如何控制程控电源的第二个通道
  16. 【无标题】公众号引流进阶教程(公众号对接电影,影视资源)
  17. 语音社交聊天app受欢迎的特点有哪些?
  18. has no attribute _TensorLike
  19. 骑士CMS模版注入+文件包含getshell复现
  20. Codeforces Round #439 (Div. 2) C.The Intriguing Obsession(组合数、记忆化搜索)

热门文章

  1. 用 Tenorshare ReiBoot修复iPhone无法开机
  2. 在苹果Mac上格式化USB闪存驱动器
  3. CSDN 文章自动显示全文
  4. 使用wepy 小程序授权点击取消授权失败的方案
  5. mysql 空值处理
  6. shell脚本循环嵌套
  7. 复杂UI的组织-创建者模式-uitableview思想
  8. Freemarker 最简单的例子程序
  9. Mirror--自增键在镜像中的影响
  10. mysql 新增字段 添加字段 删除字段 修改字段 级联删除 级联更新 等