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

ProGuardAndroid 使用姿势

如果以上还不足以说服您使用 ProGuard,其实移除无用代码混淆所有名称还有其他更多优化效果: 在一些版本 Android 设备,DEX 代码会在安装或者运行时被编译成机器码。...在您读 ProGuard 手册时,您没必要看那些 输入 / 输出部分,因为这些 Android Gradle 打包插件会替您指定输入源(您第三方库代码) Android jar 库(您构建应用时用到...在某些情况下,ProGuard 警告确实有助于您发现闪退罪魁祸首关于您配置其他问题。...作为一个可选方案来写 ProGuard 规则,您可以直接在某个不想被混淆移除类、方法、属性添加 @Keep 注解。...tools 目录下(SDK/tools/proguard/proguard-android.txt),但在新版 SDK Tools Android Gradle 插件版本2.2.0+,可以在构建时从

2.6K40

AndroidProguard介绍

ProGuard会把处理结果写到一个或者多个Jar包中。如果输入文件包含了资源文件,那么它们名字内容都会被obfuscated类名所影响。...而其他classesclass members就会被丢弃 Optimization:ProGuard进一步优化代码。...经过之前优化,非入口ClassesMethods都可以变成private,static,final,而没用参数也会被移除,一些函数会被内联 Obfuscation:ProGuard会重命名非入口...在ProGuard中,ClassesClass Member都可以创建或者通过名字动态调用,这种方式也是一个特殊入口。...Class Member会在Shrinking阶段被保存,并且String参数也会在Obfuscating阶段正确更新 更多ProGuard对于Keep一些必须出现Class或者Class Members

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

    AndroidProguard使用

    介绍 之前介绍了如何使用命令行将Jar包根据配置文件进行ProGuard,以及ProGuard过程,会遇到问题等。接下来会介绍常用ProGuard如何配置参数。...例如:**.Test可以匹配除了根目录下所有包名下Test类。mypackage.**则可以匹配所有在mypackage和它子目录所有类 而FieldsMethods与Java中类似。...默认ProGuard会读取public以及non-public类。然而,non-public类通常没有关联。可以忽略他们,提升ProGuard速度,而且也不会影响output。...如果因为这个option无法找到那个class的话 ,ProGuard会打印出来Warning。...默认ProGuard在解析classes会跳过这些类成员,因为程序通常不会引用它们。有些情况下,程序Library包相同,从而可以引用包可见类成员。

    97030

    Eclipse与Android源码中ProGuard工具使用

    由于工作需要,这两天和同事在研究android下面的ProGuard工具使用,通过查看android官网对该工具介绍以及网络其它相关资料,再加上自己亲手实践,算是有了一个基本了解。...ProGuardandroid提供一个免费工具,它能够移除工程中一些没用代码,或者使用语义隐晦名称来重命名代码中类、字段函数等,达到压缩、优化混淆代码功能。...根据ProGuard具体使用环境,我分在Eclipse工具android源码两种编译环境浅谈ProGuard使用方法。...ProGuard混淆文件:proguard-project.txtproject.properties(在老版本ADT中,只会生成一个叫proguard.cfg文件)。...此时就需要我们配置混淆个性化文件proguard-project.txt(eclipse环境中)或者proguard.flags(android源码环境),在其中去配置不需要混淆类、方法变量等。

    1.3K90

    042android初级篇之android混淆代码ProGuard

    混淆代码能有效防止被反编译,防止自己劳动成果被别人窃取; 混淆配置文件及开关设置 配置文件位置以及开关设置位置,android studio eclipse稍微有些差异,这里以android...解读一个混淆配置 proguard语法规则可参考参考链接ProGuard在线说明手册 下面是我对一个配置加上了注释,详细看过了之后,便可以打造自己简单配置了。...-keep class com.google.gson.stream.** { *; } -keep class com.google.gson.examples.android.model...2. dump.txt 描述apk内所有class文件内部结构。 3. seeds.txt 列出了没有被混淆成员。 4. usage.txt 列出了源代码中被删除在apk中不存在代码。...主要事项 一句保护,下一句启用modifers, 启用无效; 一句启用modifiers,下一句保护,保护有效。

    1.1K30

    Android 代码混淆机制

    ,别人想弄懂代码架构具体意思也比较难。...5.过滤引入第三方jar包,so文件外部lib等 //过滤第三方jar包,com.google.gson替换成要想要过滤包名 -dontwarn com.google.gson.** -keep...还有一种情况是可以正常打包出APK文件,但是不一定能运行,能运行也会在某一步出错,这种情况一般是因为把代码中不可混淆字段或文件给混淆了比如引入jar包so文件等,导致程序功能变化。.../下载proguard,目前我下载并使用proguard5.1 2.解压proguard5.1,执行 bin目录下proguardgui.bat文件打开ProGuard工具 从Android项目到处...ProGuard工具,点击左边“input/output”菜单,然后点击右边“Add input”按钮,添加需要混淆jar包,我这里是test.jar,然后点击“add output”,选择输出路径包名

    1.5K20

    Android代码混淆之混淆规则

    请尊重他人劳动成果,转载请注明出处:《Android代码混淆技巧》 因为Android是使用Java开发,所以开发者可以使用ProGuard对代码进行混淆。...SDK已经集成了ProGuard工具,开发者可以从SDK目录下\tools\proguard目录中进行查看。 ProGuard是一个免费Java类文件收缩,优化,混淆预校验器。...它可以检测并删除未使用类,字段,方法属性。它可以优化字节码,并删除未使用指令。它可以将类、字段方法使用短无意义名称进行重命名。...排除对第三方库混淆需要在混淆规则文件(通常是:proguard-project.txt或proguard.cfg或proguard-rules.pro或proguard-rules.txt也可以是其它文件名只要在配置文件中将含有混淆规则文件名配置进去就行了...)中添加如下规则: 1.如果使用了Gson之类工具要使JavaBean类即实体类不被混淆。

    1.5K20

    Android 代码混淆

    大家好,又见面了,我是你们朋友全栈君。 Android 代码混淆 简介 在我们日常开发中,对已经开发完成源代码,需做一些代码混淆工作,以对代码起到一种保护降低安装包体积作用。...shrinkResources true //proguard-android-optimize.txt:SDK提供默认混淆文件...'), 'proguard-rules.pro' } } } 配置混淆文件 在appproguard-rules.pro文件中编写混淆代码即可 混淆语法 命令 作用...-keepclasseswithmembers 防止拥有该成员成员被移除或者被重命名 -keepclasseswithmembernames 防止拥有该成员成员被重命名 类通配符 * 匹配任意长度字符...是proguard四个步骤之一,Android不需要preverify,去掉这一步能够加快混淆速度。

    1.3K30

    Android项目实战(二十五):Android studio 混淆+打包+验证是否成功

    前言: 单挑Android项目,最近即时通讯用到环信,集成sdk时候 官方有一句 在 ProGuard 文件中加入以下 keep。...proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'...##记录生成日志数据,gradle build时在本项目根目录输出## #apk 包内所有 class 内部结构 -dump proguard/class_files.txt #未混淆成员...额外添加,一般在第三方文档中都有 比如: #gson #如果用用到Gson解析包,直接添加下面这几行就能成功混淆,不然会报错。...#添加了反而有可能在打包时候遭遇同一个jar多次被指定错误,一般只需要添加忽略警告保持某些class不被混淆声明。

    1.5K70

    使用 R8 压缩您应用

    R8 压缩特性 R8 通过下面 4 项特性来减少 Android 应用大小: 摇树优化 (Tree shaking): 使用静态代码分析来查找删除无法访问代码未实例化类型; 优化 : 通过删除无效代码...不过,大多数应用都会使用 Jetpack、OkHttp、Guava、Gson Google Play 服务 等第三方库,并且用 Kotlin 编写应用始终包含 Kotlin 标准库。...启用 R8 来压缩您应用 要在 release build 启用 R8 压缩,需要在应用主 build.gradle 文件中将 minifyEnable 属性设置为 true,如下所示: android...true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt') } } } 应用代码中反射...第三方库也可能用到反射,并且由于第三方库实际是您应用一部分,您 (作为应用开发者) 将负责这些库以及您自己代码中使用反射。

    1.4K30

    读懂 Android代码混淆

    什么是混淆 关于混淆维基百科该词条解释为 代码混淆(Obfuscated code)亦称花指令,是将计算机程序代码,转换成一种功能上等价,但是难于阅读理解形式行为。...getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguard是什么 Java官网对Proguard定义...Proguard是一个集文件压缩,优化,混淆和校验等功能工具 它检测并删除无用类,变量,方法属性 它优化字节码并删除无用指令. 它通过将类名,变量名方法名重命名为无意义名称实现混淆效果....GSON序列化与反序列化 GSON是一个很好工具,使用它我们可以轻松实现序列化反序列化.但是当它一旦遇到混淆,就需要我们注意了.....详解Java中注解 其他不该混淆 jni调用java方法 javanative方法 js调用java方法 第三方库不建议混淆 其他反射相关一些情况 stacktrace恢复 Proguard

    1.6K20

    android代码混淆

    proguard 问题和风险 代码混淆后虽然有混淆优化好处,但是它往往也会带来如下几点问题 1,混淆错误,用到第三方库时候,必须告诉 proguard 不要检查,否则proguard 会报错。...自定义View Android Parcelable Android R 文件 Android Parcelable 枚举 各个开发人员必须检查自己code 是否用到反射 ,其他不能混淆地方...升级办法很简单,就是把android sdk目录下tool/proguard目录覆盖一下即可。...使用 gson 需要配置 当Gson用到了泛型就会有报错,这个真给郁闷了半天,提示“Missing type parameter”。...所以上面给东西还不够,还要加上 # 用到自己拼接JsonObject -keep class com.google.gson.JsonObject { *; } 个人建议减少这些依赖包混淆带来麻烦

    1.6K80

    关于AndroidStudio混淆打包 proguard-rules.pro 配置关于AndroidStudio混淆打包 proguard-rules.pro 配置

    关于AndroidStudio混淆打包 proguard-rules.pro 配置 最近在搭建一个APP时候,使用了混淆打包方式,然后发现死活打包不。...后来求爷爷告奶奶才搞正常了,这里记录一下,其实关键点就是在这个 proguard-rules.pro 文件里面 ,一下是我自己配置,大家看着,就知道怎么配置了。...specified # in D:\Android\sdk/tools/proguard/proguard-android.txt # You can edit the include path and...Signature, Annotation -keep class com.google.gson.** {*;} #-keep class sun.misc.Unsafe { *; } -keep...,gradle build时在本项目根目录输出## #apk 包内所有 class 内部结构 -dump class_files.txt #未混淆成员 -printseeds

    1.2K20
    领券