转于:http://www.cnblogs.com/sw926/p/3314165.html
---------------------------------------------------------------------------------------
首先查看一下 “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-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就能看到。
相关推荐
本文将深入探讨Android代码混淆的原理、实现方法以及如何编写混淆规则。 首先,代码混淆(Obfuscated code)是将源代码转换为难以理解和分析的形式,其目的是增加反编译的难度,尽管不能完全防止反编译。混淆并不...
本文将深入探讨Android代码混淆的前因后果、原理以及如何实施。 首先,我们来理解什么是代码混淆。代码混淆是将源代码转换成一种难以理解和阅读的形式,通常通过重命名变量、方法和类名,以及压缩和优化代码结构来...
本篇文章将深入探讨Android代码混淆配置的细节,帮助开发者理解如何有效地使用这一技术。 混淆是通过重命名类、方法和变量,使得原始代码变得难以理解的过程。在Android中,我们通常使用ProGuard工具进行代码混淆,...
本文将详细探讨Android代码混淆的原理及其实践方法。 #### 二、代码混淆的目的 1. **保护知识产权**:通过混淆处理后的代码很难被逆向工程,这有助于保护开发者的核心算法和逻辑不被盗用。 2. **减小APK大小**:...
"Android代码混淆及签名" Android 代码混淆是指对 Android 应用程序的源代码进行混淆处理,以防止别人反编译和盗取源代码。代码混淆可以使得反编译变得困难,但是不能完全阻止反编译。 Android 代码混淆可以通过...
### Android APK代码混淆详解 在Android开发过程中,为了保护源代码不被轻易反编译以及减少APK包的体积,通常会采用代码混淆技术。本文将详细介绍如何进行Android项目的代码混淆,并结合给定的配置文件内容,深入...
在这个“android ndk+代码混淆demo”中,开发者提供了一个实际的项目,展示了如何结合Android NDK和代码混淆技术来创建一个应用。通过这个Demo,学习者可以了解如何在Android项目中集成NDK,以及如何配置和使用...
Android 代码混淆写法总结 Android 代码混淆是指在 Android 应用程序中对代码进行混淆处理,以保护代码的安全和 prevents 反编译。混淆可以将代码压缩,混淆文件,预检,优化等多种作用。 使用混淆的方式是通过在 ...
### Android代码混淆的使用情况分析 #### 一、引言 在移动互联网时代,Android作为全球最广泛使用的移动操作系统之一,其应用数量庞大且增长迅速。为了保护开发者的知识产权及提高应用的安全性,代码混淆技术成为...
代码混淆是一种安全技术,主要应用于软件开发中,尤其是iOS和Android平台,用于保护应用程序的源代码不被轻易逆向工程解析。在这个“代码混淆实践demo”中,我们重点关注的是Swift编程语言在iOS开发中的应用,以及...
在Android开发过程中,为了保护应用的安全性和代码的私密性,开发者通常会使用混淆工具(如ProGuard或R8)对APK进行混淆,混淆后的代码难以阅读和理解,但这也给调试和后期维护带来了困难。当我们需要查看混淆后的...
ProGuard通过将原始的类、方法和变量名称替换为简短的随机字符串,实现了代码混淆。它还能够删除未使用的类、字段和方法,以减小应用的体积。混淆过程包括预处理、优化、混淆和后期处理四个步骤,确保了代码的压缩...
总结来说,Jocky插件是Eclipse开发环境中的一个重要工具,它帮助开发者实现代码混淆,以保护软件源代码,防止恶意分析。通过集成ProGuard,Jocky提供了一种便捷的方式来管理混淆规则,并在Eclipse的界面内直接执行...
在Android应用开发中,SO(Shared Object)文件是C或C++编译的库,用于提供Java层无法实现的性能优化或系统级别的功能。然而,由于SO文件通常包含敏感的原生代码,它们成为了黑客攻击的目标。为了提高应用的安全性,...
为了进一步提升安全性,开发者还需要结合其他安全措施,如代码混淆、对敏感数据进行加密、使用安全的网络通信协议等。 总结,资源混淆是Android应用安全保护的重要一环,而这款“资源混淆工具”则为开发者提供了...
**ProGuardd代码混淆及操作使用方法** 代码混淆是软件开发中的一个重要环节,尤其是在Java和Android应用开发中,为了保护源代码的安全性、减少反编译的风险,开发者通常会使用ProGuard工具对代码进行混淆。ProGuard...
代码混淆是将源代码中的类名、方法名、变量名等替换为无意义的简短名称,以防止他人逆向工程解析原始逻辑。这对于开源项目或发布到公共平台的应用尤其重要,可以有效防止恶意抄袭和攻击。 在Maven项目中,我们通常...
这些工具虽然可以帮助开发者分析其他应用的实现,但同时也可能被恶意使用,因此开发者必须重视代码混淆以对抗反编译。 在进行代码混淆时,需要谨慎处理库和依赖,因为过度混淆可能导致运行时错误。通常,我们会在...