首先查看一下 “project.properties” 这个文件:

# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system edit
# "ant.properties", and override values to adapt the script to your
# project structure.
#
# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

# Project target.
target=android-18

简单翻译一下:

这个文件又android工具自动生成,不要修改这个文件 —— 你的更改将会被删除!(这句有点不懂)

这个文件必须在版本控制系统中。

需要修改Ant构建系统的自定义属性的话,编辑"ant.properties"这个文件,重写一些值来适应你的工程结构。(翻译的很水,不要当真)

如果需要使用ProGuard来压缩和混淆代码,将下面这句解除注释(可用的属性有:sdk.dir, user.home)

翻译完毕...

到这里应该明白了,下面这行配置就是代码混淆的开关。

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

proguard-android.txt 这个文件在SDK的 tools/proguard文件夹中,是Google事先写好的一个代码混淆配置文件,是一个基础的android代码混淆配置文件。

继续查看 proguard-project.txt这个文件:

# To enable ProGuard in your project, edit project.properties
# to define the proguard.config property as described in that file.
#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in ${sdk.dir}/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the ProGuard
# include property in project.properties.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

再次秀一下我蹩脚的英语,简单翻译一下:

如果需要使用ProGuard,编辑project.properties文件,根据描述定义proguard.config。

可以在这儿添加具体的代码混淆规则。

默认情况下,这个文件中的标志附加到${sdk.dir}/tools/proguard/proguard-android.txt指定的标志。

你可以通过改变 project.properties 中的 ProGuard的include属性来编辑路径和指令。

...

更多的信息,请查看http://developer.android.com/guide/developing/tools/proguard.html。

在这儿添加工程的具体的keep options:

...

如果你的工程使用了WebView中的JS,解除下面的注释,并且指定JavaScript接口类的全名。(也就是是忽略js部分,不进行混淆,方法是解除注释,将fqcn.of.javascript.interface.for.webview替换为与JS绑定的类名。)

#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}

翻译完毕...

通过这两个文件的注释可以得出结论:

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 有了这一句就启用的代码混淆。当然,默认的设置是不带优化功能的,可以用以下设置来加上代码优化功能(上图蓝色文字部分):

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

proguard-android.txt 是基础的Android代码混淆规则,如果需要添加规则,添加到proguard-project.txt 中。

如果没有引入第三方的库,一般情况下 proguard-android.txt 的规则是够用的,但是如果有第三方的库,在混淆的时候要把第三方的库忽略掉,这是就需要在 proguard-project.txt 文件中添加规则。(android.support.** 已经在proguard-android.txt做了处理,所以如果使用了android.support.v4,就不用添加代码混淆的规则了)。

对第三分库的处理,参考:http://blog.csdn.net/u_xtian/article/details/7495023

具体做法,在 proguard-project.txt 添加:

-libraryjars **.jar (声明lib文件)

-dontwarn com.xx.bbb.** (不提示警告)
-keep class com.xx.bbb.** { *;} (不进行混淆)

例如百度地图:

-libraryjars libs/baidumapapi_v2_1_3.jar

-dontwarn com.baidu.mapapi.**
-dontwarn com.baidu.platform.**
-dontwarn com.baidu.location.**
-dontwarn com.baidu.vi.**
-dontwarn vi.com.gdi.bgl.android.**

-keep class com.baidu.mapapi.** {*; }
-keep class com.baidu.platform.** {*; }
-keep class com.baidu.location.** {*; }
-keep class com.baidu.vi.** {*; }
-keep class vi.com.gdi.bgl.android.** {*; }

可能有人很疑惑,不进行代码混淆的方法我知道,但这些包名去那里找啊,其实很简单。打开Android Private Libraries就能看到。

转载地址:http://www.th7.cn/Program/Android/201309/150445.shtml

Android代码混淆官方实现方法相关推荐

  1. android代码混淆个人总结及踩坑

    android代码混淆个人总结及踩坑 前言 公司项目使用组件化开发的形式,需要对自己负责的模块进行一些混淆配置,关于混淆相信做android开发的都或多或少有过一些接触,通过对混淆文件的配置从而将代码 ...

  2. android加密墙,Android代码混淆加密配置(Proguard文件解析)

    Android代码混淆加密配置(Proguard文件解析) Android代码混淆加密配置(Proguard文件解析) 为了防止自己的APP被轻易反编译,我们需要对APK进行混淆,或者特殊加密处理.可 ...

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

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

  4. android 混淆后的机制,Android 代码混淆机制

    Android 代码混淆机制 由于Android项目是基于java语言的,而java属于高层抽象语言,易于反编译,其编译后的程序包包含了大量的源代码变量.函数名.数据结构等信息,根据其编译打包后的AP ...

  5. android混淆语法(android代码混淆工具)

    android 代码混淆算法有哪些 根据SDK的版本不同有2中不同的代码混淆方式,以上的proguard.cfg参数详解中所涉及到的信息是在较低版本SDK下的混淆脚本,事实上在高版本的SDK下混淆的原 ...

  6. Android 代码混淆语法讲解及常用模板(转)

    转载请注明原博客地址  Android 代码混淆语法讲解及常用模板 前言 混淆对于每一个开发者来说都不陌生,对于大多数 APP 而言,在上线之前,通常会进行代码混淆,加固,防止自己的 APP 被别人轻 ...

  7. Android代码混淆配置说明

    1.为什么需要代码混淆 Proguard混淆用于保护APP不被破解和逆向分析,Proguard通过移除没有用到的代码以及通过特定规则重命名类.变量.方法来压缩.优化.混淆你的代码.这样可以让你APK更 ...

  8. 使用ProGuard进行Android代码混淆(保姆级教程)

    使用ProGuard进行Android代码混淆(保姆级教程) 一.ProGuard的功能 ProGuard是一个混淆代码的开源项目,主要是用来对java代码进行混淆,当然也就可以对java代码进行混淆 ...

  9. Android代码混淆后的定位

    Android代码混淆后的定位 什么是代码混淆 如何开启Android Studio的代码混淆 如何在程序奔溃后定位到奔溃的代码行 mapping.txt 分析流程 什么是代码混淆 在java写的.j ...

最新文章

  1. 100天后 - 100-days-later
  2. 基于8086CPU微处理器的汇编学习之段地址与偏移地址的分析
  3. Python高阶函数和函数嵌套
  4. spi 外设驱动(spi_driver)
  5. C语言指针,申请、释放内存,线程
  6. 作者:贵芳(1991-),女,合肥工业大学计算机与信息学院硕士生
  7. LeetCode:Rotate Image
  8. MongoDB聚合—计数count
  9. 最最超级无敌的冷笑话,能把人噎死
  10. 使用QT5+Opencv完成简单的图像处理及视频处理软件
  11. Verilog 基本电路1-与或非,异或门
  12. “三权分立”模型的概述
  13. 研究生科研素养提升的测试题
  14. 使用md5+salt+hash散列查询
  15. SQL学习之使用order by 按照指定顺序排序或自定义顺序排序
  16. 大数据-------元数据管理
  17. Android异常大全
  18. 2021年Java面经分享:java基础入门清华大学出版社课后答案
  19. Java系列技术之JDBC操作数据库-钟洪发-专题视频课程
  20. MCE | 抗氧化剂有哪些?

热门文章

  1. 3D建模教程:如何创建拉风的科幻飞船?
  2. 小米 OJ 编程比赛 03 月常规赛 小爱密码 2.0
  3. Android触控基础 MotionEvent
  4. python名人名言大全_Python_格言
  5. linux定时执行命令
  6. 电话号码与英文单词对应
  7. (四)活动目录:server 2012域控制器的迁移
  8. php表单数据验证类
  9. nginx pathinfo配置,适用于较高版本的nginx
  10. 牛客白月赛27【题解】