首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 安全】DEX 加密 ( Proguard 简介 | Proguard 相关网址 | Proguard 混淆配置 )

Proguard 混淆配置 : -keep 指定 类 , 类成员 , 不被混淆 ; ( 类成员指的是类的成员方法 成员属性 ) -keepclassmembers 指定 类成员 不被混淆 , 类... 类 方法 可以混淆 ; -keepclasseswithmembers 指定 类 类成员 , 不被混淆 , 前提是 指定的类成员存在 ; 开启 Proguard : 在 Module 下的 build.gradle...} } 上述 proguard-rules.pro 是开发者自己手动配置的 , 上述 proguard-android-optimize.txt 混淆配置文件是系统自动生成的 , 该 proguard-android-optimize.txt...(‘proguard-android-optimize.txt’)}”) 语句 , 打印了混淆脚本 proguard-android-optimize.txt 的路径 , 其打印结果如下 , 该混淆脚本在...\intermediates\proguard-files\proguard-android-optimize.txt-3.6.1 生成混淆配置脚本 proguard-android-optimize.txt

74500
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android-Proguard(混淆)

    以我们的常用开发工具andorid studio 为例,Android Studio自身集成Java语言的ProGuard作为压缩,优化,混淆预校验,并配合Gradle工具进行构建,我们只需要在工程应用目录的...大家看到了,有两个混淆文件,proguard-android.txtproguard-rules.pro,proguard-rules.pro是我们需要自己编写的混淆文件,proguard-android.txt...除了proguard之外,还有一个DexGuard,是专门用来优化混淆Android应用的。它包括资源混淆,字符串加密,类加密dex文件分割等。...底层组件类不要混淆   -keep public class * extends android.app.Activity   -keep public class * extends android.app.Application...; 7,Parcelable的子类Creator静态成员变量不混淆,否则会产生Android.os.BadParcelableException异常; -keepclass*implementsAndroid.os.Parcelable

    1.4K40

    Android中的Proguard使用

    介绍 之前介绍了如何使用命令行将Jar包根据配置文件进行ProGuard,以及ProGuard的过程,会遇到的问题等。接下来会介绍常用的ProGuard如何配置参数。...**则可以匹配所有在mypackage和它子目录的所有类 而FieldsMethods与Java中类似。除了Method的参数中不需要包含它的名字,就和Javap中一样。...默认的,ProGuard在解析classes会跳过这些类成员,因为程序通常不会引用它们。有些情况下,程序的包Library的包相同,从而可以引用包可见的类成员。...如果它们没有在Shrink阶段被移除的话 -keepclassmembernames class scala.concurrent.forkjoin.ForkJoinPool { long eventCount...; int workerCounts; int runControl; scala.concurrent.forkjoin.ForkJoinPool$WaitQueueNode

    97030

    Android 安全】DEX 加密 ( Proguard 简介 | 默认 ProGuard 分析 )

    文章目录 一、Proguard 配置简介 二、Proguard 完整注释 一、Proguard 配置简介 ---- 更多 ProGuard 混淆配置参考 : https://www.guardsquare.com...保留这些类类成员 : # 保留这些类类成员 -keep public class com.google.vending.licensing.ILicensingService 5 ....保留类成员 , 包括成员函数 成员变量 : # 不要混淆 Activity 及 子类的 成员 , 以防在 XML 的 onCLick 属性中用到 ....# 如果想要启用优化 , 不能只在 ProGuard 项目配置中将优化标志设为 true ; # 相反还要在 build.gradle 中指向 "proguard-android-optimize.txt...verbose # 保留一些反射中可能用到的属性 -keepattributes *Annotation*,Signature,InnerClasses,EnclosingMethod # 保留这些类类成员

    49400

    微信Android增量Proguard方案

    目前Android微信采用模块化的Gradle构建方式,也是业界普遍采用的一种方式。...,也不允许您修改优化的行为,比如-optimizations -optimizationpasses,这种黑盒的行为往往一旦出现了问题,高昂的维护成本也不容忽视;第三章节我们将进一步解释采用Proguard...而 R8 【图6】是 D8 的衍生产品,旨在集成 ProGuard D8 的功能,目前仍在优化中,逐渐成熟,具体查看QuardSquare官网[1]了解更多。...: 图7 Proguard输出两个产出文件 usage.txt mapping.txt【图7】,usage.txt 是将无用Class、FieldMethod进行删除,mapping.txt保留...Class、FieldMethod的original-obfucate class mapping、inline mapping【图8】,其中inline最为常见,也是Proguard难以增量的主要原因之一

    2.3K20

    ProGuardAndroid 上的使用姿势

    如果以上还不足以说服您使用 ProGuard,其实移除无用代码混淆所有名称还有其他更多的优化效果: 在一些版本的 Android 设备上,DEX 代码会在安装或者运行时被编译成机器码。...在您读 ProGuard 手册时,您没必要看那些 输入 / 输出的部分,因为这些 Android Gradle 打包插件会替您指定输入源(您第三方库的代码) Android jar 库(您构建应用时用到的...APK Analyzer ProGuard Android Studio 集成的 APK Analyzer 可以帮您看到哪些类被 ProGuard 移除了并支持为它们生成 keep 规则。...除了让您的代码更小巧之外, ProGuard R8 可以选择优化您的代码让它运行得更快,当然这又是另一篇文章的话题了…… ---- ¹ proguard-android.txt 文件之前是在 SDK...tools 目录下(SDK/tools/proguard/proguard-android.txt),但在新版的 SDK Tools Android Gradle 插件版本2.2.0+上,可以在构建时从

    2.6K40

    Eclipse与Android源码中ProGuard工具的使用

    ProGuardandroid提供的一个免费的工具,它能够移除工程中一些没用的代码,或者使用语义上隐晦的名称来重命名代码中的类、字段函数等,达到压缩、优化混淆代码的功能。...根据ProGuard的具体使用环境,我分在Eclipse工具android源码两种编译环境浅谈ProGuard的使用方法。...ProGuard的混淆文件:proguard-project.txtproject.properties(在老版本的ADT中,只会生成一个叫proguard.cfg的文件)。...: sdk.dir, user.home) ,意指要让ProGuard 来压缩混淆代码,把这句注释去掉即可!...此时就需要我们配置混淆的个性化文件proguard-project.txt(eclipse环境中)或者proguard.flags(android源码环境),在其中去配置不需要混淆的类、方法变量等。

    1.3K90

    Android 安全】DEX 加密 ( Proguard 混淆 | 混淆后的报错信息 | Proguard 混淆映射文件 mapping.txt )

    文章目录 一、Proguard 混淆后的报错信息 二、Proguard 混淆映射文件 mapping.txt 更多 ProGuard 混淆配置参考 : https://www.guardsquare.com.../en/products/proguard/manual/usage 一、Proguard 混淆后的报错信息 ---- 前提 : proguard-rules.pro 混淆配置中配置保留行数 ; # 保留行数...:2473) at android.os.Handler.dispatchMessage(Handler.java:110) at android.os.Looper.loop...(Handler.java:30) , 报错的是混淆后的信息 , 可读性很差 ; 二、Proguard 混淆映射文件 mapping.txt ---- 前提 : proguard-rules.pro 混淆配置中配置保留行数...; # 保留行数 -keepattributes SourceFile,LineNumberTable Proguard 混淆后 , 会提供一个 原始代码 与 混淆过的代码 的对应关系文件 mapping.txt

    1K00

    Android插件化、热补丁中绕不开的ProGuard的坑

    ProGuard简介 ProGuard是2002年由比利时程序员Eric Lafortune发布的一款优秀的开源代码优化、混淆工具,适用于JavaAndroid应用,目标是让程序更小,运行更快,在Java...背景 在我们实施插件化、热补丁修复时,为了让插件、补丁原来的宿主兼容,必须依赖ProGuard的applymapping功能的进行增量混淆,但在使用ProGuard的applymapping时会遇到部分方法混淆错乱的问题...前者包含我们编写代码、第三方的SDK,而后者通常是系统库,不需要编译到程序中,比如引用的android.jar、rt.jar。...ProGuard代码优化可以解决这些问题,移除没有使用到的代码、优化指令、逻辑,以及方法内部的局部变量分配内联,让程序运行的更快、占用磁盘、内存更低。...初始化 ProGuard初始化会读取我们配置的proguard-rule.txt各种输入类以及依赖的类库,输入的类被ClassPool统一管理,我们的rule.txt配置了keep类的条件,ProGuard

    1.6K60

    Scala简介安装

    Scala简介安装     本篇文章为大家介绍以下ScalaScala的安装以及IDE(eclipse)的使用,虽然这个基本环境没有什么技术含量,但是基本环境做不好,往后探讨再高深的东西,都是白扯,...Scala既是面向对象的语言,也是面向函数的语言。scala可以为你在做大量代码重用扩展是提供优雅的层次结构,并可以通过高阶函数来实现这样的目标。...scala不是一门纯的函数式编程语言,所以有别纯函数式语言的区别之一是:scala提供变量常量,而纯函数式编程语言是没有变量这概念的。     ...2.使用 Scala基本是基于Java的,所有的使用的方法基本Java相同,差别就在与一些命令不同,如下: 1>通过cmd     通过cmd命令窗口,输入scala,查看Scala的版本信息,Java...调用执行:scala Person ?     看到这里你就会发现,ScalaJava的共通之处了。

    86860

    ScalaKotlin脚本编程

    ScalaKotlin脚本编程 ScalaKotlin作为运行在JVM上的编程语言,解决了Java的很多痛点。...今天我们来聊聊如何将ScalaKotlin作为脚本语言使用(Java不支持以脚本形式运行哦)。...Scala脚本编程 Scala脚本的扩展名仍为scala,运行命令为scala普通的Scala类一样。...可以看到Kotlin脚本程序一样不需要主函数,Scala脚本同样以args参数接收用户输入(args是一个Array[String]类型的数组) 在命令行执行:scala Main.scala 高寒...ScalaKotlin脚本编程的异同 Scala脚本的扩展名执行方式普通Scala类一样;Kotlin脚本的扩展名为kts,执行的时候需要加-script参数 Scala提供了对于外部命令调用的快捷方法

    1.7K10

    PythonScala的序列

    序列是一门高级语言里都会具备的一种数据结构,ScalaPython也不例外。在不同的语言里,序列有着各种不同的别称以及增添了不同的功能,今天只关注ScalaPython基本的内置数据结构。...Python要介绍的有两种,分别是列表元组;Scala里的则是数组,列表元组。不要被相同的名字糊弄了,PythonScala的列表元组虽然同名,但本质上是不一样的。...> array2 res4: Array[Int] = Array(1, 2, 3) 其实无论在ScalaPython,我们都不应该把赋值语句理解为赋值,而是赋与一个指向变量的对象。...('f', (1,2,3)) 看完Scala里独特的数组,现在回过头看看列表元组。...Python的元组则是一个不可变的能容纳各个类型元素的序列,初始化Scala很相似,使用方式很简单,使用中括号就可以了: tuple0 = (1,2) tuple0[0] 1

    74010

    scala的optionsome

    Scala 一直隐藏的一些重要内容将要现身:Scala 也是一种函数语言(这里的函数性是与其他 dys 函数语言相对而言的)。 Scala 的面向函数性非常值得探讨,这不仅是因为已经研究完了对象内容。...Scala 中的函数编程将提供一些新的设计结构理念以及一些内置构造,它们使某些场景(例如并发性)的编程变得非常简单。....本月,您将首次进入 Scala 的函数编程领域,查看大多数函数语言中常见的四种类型:列表(list)、元组(tuple)、集合(set) Option 类型。...这类似于:我们可以要求经理倾听我们反对他们要求的不可能完成的项目期限,然后经理再进一步把我们的反对传达给上司用户。 Scala 提供了一种普通的函数方法,打破了这一僵局。...清单 2 展示了 Scala 的模式匹配: 清单 2.

    1.2K50

    PythonScala的集合映射

    在入门系列的最后,让我们来看看基于hash表的两种常见的数据结构,集合映射。在Scala里的集合映射,这两种数据结构都有可变不可变的两种版本,区别仅仅在于类的继承关系。...而Python的集合也有可变不可变两种,内置的字典则是只有一种,但是在types模块里有基于字典的MappingProxyType的不可变的只读视图。...scala> import scala.collection.mutable import scala.collection.mutable scala> val set1 = mutable.Set...frozenset({1,2,3,45}) Out[11]: frozenset({1, 2, 3, 45}) 2.集合的求交集并集 Scala scala> val a = Set(1,2) a:...world, 1 -> hello) Python dict0 = {} dict0[1] = "hello" dict0[2] = "world" 好了,入门系列就到此为止了,下一章我们就要深入类对象了

    59920
    领券