android 混淆基本知识

官网介绍:https://www.guardsquare.com/en/proguard/manual/introduction

android 开发文档:https://developer.android.com/studio/build/shrink-code.html

1.混淆的基本原理

android平台的混淆原理简单来说就是把代码中原来有具体含义的包名,类名,变量名,方法名等名称全部替换成按顺序排列的无意义的英文字母a、b、c….这样代码结构没有变化,还可以运行得到一样的结果,并且就算代码被反编译出来,别人很难弄懂代码的架构和具体意思。

2.混淆步骤

a.打开
minifyEnabled  为true
buildTypes {    release {        minifyEnabled true        proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘    }}

b.android studio 中自定义文件在文件 工程\app\proguard-rules.pro中自定义。
不混淆 ScrollView类中自定义的public print函数-keepclassmembers class com.example.zcx.democoderjoy.ScrollViewActi {   public *;}效果:增加之前反编译:

家之后效果:

发现增加了print函数,并没有被混淆。

c.每次构建时 ProGuard 都会输出下列文件:

dump.txt
说明 APK 中所有类文件的内部结构。
mapping.txt
提供原始与混淆过的类、方法和字段名称之间的转换。
seeds.txt
列出未进行混淆的类和成员。
usage.txt
列出从 APK 移除的代码。

这些文件保存在 <module-name>/build/outputs/mapping/release/ 中

3.混淆优缺点

混淆的优点主要两个:1.优化删除无用代码,减少apk的体积。2.混淆代码让其反编译之后,无法理解具体内容。

缺点:调试不方便(可以使用mapping.txt),测试不充分可能导致部分功能不能使用。

  • 调试不方便(可以配置mapping变得方便在路径 )
  • 测试不充分,可能导致部分功能不能使用(比如注解相关等)
时间: 2024-10-25 15:30:57

android 混淆基本知识的相关文章

Android高级开发知识总结

第1篇 基础篇 第1章 Android触摸事件传递机制 1.1 触摸事件的类型 1.2 事件传递的三个阶段 1.3 View的事件传递机制 1.4 ViewGroup的事件传递机制 第2章 Android View的绘制流程 2.1 绘制的整体流程 2.2 MeasureSpec 2.3 Measure 2.4 Layout 2.5 Draw 第3章 Android 动画机制 3.1 逐帧动画(Frame Animation) 3.1.1 XML 资源文件方式 3.1.2 代码方式 3.2 补间

Android 混淆[学习笔记]

Android 混淆 Gradle的简介: http://www.flysnow.org/2015/03/30/manage-your-android-project-with-gradle.html多渠道打包的介绍: http://blog.csdn.net/tu_bingbing/article/details/42362619http://coolshell.info/blog/2015/03/android-studio-prefrence.html 目前Android studio 1

Android混淆打包

在这之前,看了下proguard官网介绍,并搜了下相关资料. ProGuard简介 ProGuard是一个SourceForge上非常知名的开源项目.官网网址是:http://proguard.sourceforge.net/. Java的字节码一般是非常容易反编译的.为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理.ProGuard的主要作用就是混淆.当然它还能对字节码进行缩减体积.优化等,但那些对于我们来说都算是次要的功能. 引用ProGuard官方的一段话来介绍

Android 混淆打包不混淆第三方jar包

项目因为要发布,所以要混淆打包. 混淆打包流程: 1.在proguard-project.txt文件中添加不需要混淆的类和第三方的jar包 这个是保持自己包中不需要混淆的类,如果有些类调用了jni也不需要混淆,不然会出错.还有如果项目中有其他项目作为library引入,那这些项目的一些类也不能混淆. 这个是保持项目中的第三方jar不混淆 另外加上上面几句话,不然会在控制台中报warning警告 2.在project.properties文件中把proguard.config=${sdk.dir}

Android 混淆代码有关问题总结

Android 混淆代码问题总结Android 混淆代码:最快的方式:1. 首先更新Android的SDK至最新版本,重新建立1个工程,把源码和资源及其他文件拷到新的工程里面.2. 工程目录底下有个文件叫proguard.cfg,修改default.properties内容.在其中增加proguard.config=proguard.cfg这行.3. Project->clean 一下该工程,重新编译.右键点击该工程,Android Tools -> Export Signed Applica

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

【ALearning】第二章 Android工程相关知识介绍

本章主要初步介绍Android工程开发环境的搭建,以对Android项目整体的认识与了解.本章包括Android开发环境搭建.第一个Android项目Hello World与Android项目的文件目录结构介绍. Android开发环境搭建 Android开发环境的搭建方式有两种,分别是Eclipse/MyEclipse+ADT+Android SDK和Android Developer Tools.前者方式的开发环境搭建,参看[http://blog.sina.com.cn/s/blog_4e

Android权限管理知识学习记录

一.Android权限背景知识 在Android 6.0之前,所申请的权限只需要在AndroidManifest.xml列举就可以了,从而容易导致一些安全隐患,因此,在Android 6.0时,Google为了更好的保护用户隐私提出了新的权限管理机制,同时将其分为两大类: (1)Normal Permissions Normal Permission一般不涉及用户隐私,是不需要用户进行授权的,比如手机震动,访问网络等. (2)Dangerous Permission Dangerous Perm

android开发基础知识了解

JDK下载:www.oracle.com; SDK下载:www.android.developer.com; eclipse下载:www.eclipse.org; android开发基础知识了解