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

如何在使用Proguard时获取Android Monitor中的真实类名

在使用Proguard时,可以通过以下步骤获取Android Monitor中的真实类名:

  1. 确保在项目的build.gradle文件中启用了Proguard。在android节点下的buildTypes中,将minifyEnabled属性设置为true。
  2. 在项目的proguard-rules.pro文件中添加以下规则,以保留类名的映射关系:
代码语言:txt
复制

-keepattributes SourceFile,LineNumberTable

-keep public class * extends android.app.Activity

-keep public class * extends android.app.Application

-keep public class * extends android.app.Service

-keep public class * extends android.content.BroadcastReceiver

-keep public class * extends android.content.ContentProvider

-keep public class * extends android.app.backup.BackupAgentHelper

-keep public class * extends android.preference.Preference

-keep public class com.android.vending.licensing.ILicensingService

代码语言:txt
复制

这些规则将保留Android应用程序中的常见类名,以便在Android Monitor中显示真实的类名。

  1. 在Android Studio中,点击菜单栏的"Build",然后选择"Clean Project",以清理并重新构建项目。
  2. 运行应用程序,并在Android Monitor中查看日志。现在,你应该能够看到真实的类名,而不是被混淆后的类名。

Proguard是一个用于代码混淆和优化的工具,它可以减小应用程序的大小并增加安全性。通过混淆类名、方法名和变量名,Proguard使得代码更难以被逆向工程分析。然而,这也导致了在调试和日志中难以识别真实类名的问题。

腾讯云提供了丰富的移动开发和云计算相关产品,其中包括云服务器、云存储、人工智能服务等。你可以在腾讯云官网(https://cloud.tencent.com/)了解更多关于这些产品的详细信息和使用指南。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ProGuardAndroid使用姿势

当一些和方法会被动态访问到时(使用反射),在某些情况下,ProGuard 在构建调用图不能正确决定他们「生死」,导致这些代码被错误移除掉。...这些警告一个原因就是,您构建路径没有加入需要依赖 JARs,使用了 provided (仅编译)依赖。而有时候,在 Android 上这些代码依赖在运行时并不会被真正调用。...让我们看一个真实例子。 ? 一个项目依赖 OkHttp 3.8.0 构建消息。 OkHttp 库在 3.8.0 版本添加了新注解(javax.annotation.Nullable)。...当 ProGuard 移除过少 所有应用都可以使用 Android 内置 ProGuard 一些安全默认规则,保留 View getter 和 setter 方法,因为他们通常会被反射来访问...这样的话当您看 ANRs & crashes 页面,上报堆栈都会现实真实、方法名和行号而不是缩短混淆后那些。

2.5K40

混淆技术 发布于 2023年05月30

混淆表 混淆技术还是比较容易理解和接受,混淆通常是将代码、方法名、变量等更改为不易理解字符序列,在这个过程,混淆表被用作一个映射,指示如何将原始名称转换为混淆后名称。...在Forge中就选择性地反混淆了比较重要内容,对于其他内容则保留了混淆结果: Android 除了将MyClass更改为a1b2c3,还有就是更改为不容易区分大小写随机字符串,:iIIllilllIlIilIiiliiil...以下是一些常见Android混淆工具: ProGuard:这是一个开源Java文件混淆器,也是Android官方推荐混淆工具。...ProGuard 使用 ProGuard 来混淆Android应用一般需要以下几个步骤: 启用ProGuard:在Android项目中,找到build.gradle文件,然后在android,找到buildTypes...在反混淆原开发者代码,应该始终获取原开发者许可,尊重原开发者版权,并且遵守所有相关法律。 在遵循道德和法律责任前提下进行反混淆重要步骤。有许多工具可以帮助开发者对Java代码进行反混淆。

28030

提高APP安全性必备加固手段——深度解析代码混淆技术

使用方式:在 build.gradle 文件配置 proguard-rules.pro 文件,然后在项目构建执行混淆。...// 不略过非公共库 -verbose // 输出详细信息 ​ # 第三方库混淆规则 ​ # 自定义混淆规则 在 proguard-rules.pro 文件添加自定义混淆规则。...例如: # 避免混淆指定或方法名 ​ -keep class com.example.MainActivity // 保留 MainActivity 不混淆 -keepclassmembers...编辑 需要注意是,这种加固方式不能完全杜绝反编译,但是可以大大增加反编译难度,让黑客无法轻易地获取 APK 代码。此外,增加代码混淆也是防止反编译和保护源代码一种重要手段。...在使用加固技术,需要注意以下几点: 加固技术不能完全杜绝破解行为,只能增加攻击者难度,在应用程序开发过程需从多个方面提高应用程序安全性。

27120

混淆另一重境界

实现原理 先来看看Android gradle plugin在构建最后所走几个task: ?...内容清空 如果需要混淆依赖库,则删除依赖库proguard.txt文件 遍历一遍mapping.txt获取所有Java映射关系得到一个Map 拿映射Map替换AndroidManifest.xml...里Java原 拿映射Map替换layout、menu和value文件夹下xmlJava原 重新跑ProcessAndroidResources Task 恢复之前删除依赖库proguard.txt...Mess中直接将proguard.txt文件最后加上~,proguard.txt~,在linux中表示备份,以便之后文件恢复。 相关代码如下: ?...遍历一遍mapping.txt获取所有Java映射关系得到一个Map 之前第一步已经将生成main.jar中所有的.class文件做相关混淆了,那么我们之前所在xml里写还是原来Java

1.1K10

Android 混淆那些事儿

混淆不仅能将代码、字段、方法名变为无意义名称,保护代码,也由于移除无用、方法,并使用简短名称对、字段、方法进行重命名缩小了程序size。...(‘proguard-android.txt’) 方法可从 Android SDK tools/proguard/ 文件夹获取默认 ProGuard 设置。...: 参见Proguard官方字段解读 不使用大小写混写 -dontusemixedcaseclassnames 默认情况下混淆可以包含大小写字符混合。...csh代码方便,我们需要在proguard_rules.pro手动添加抛出异常保留代码行号,并且重命名抛出异常文件名称,这样能方便定位问题: 抛出异常保留代码行号 -keepattributes...中资源文件使用简短无意义名称进行替换,如下面代码所示,在AAPT生成resources.arsc和*.ap*把资源文件名称进行替换。

3.2K50

一篇文章带你领略Android混淆魅力

从上面两张图可以看出:经过混淆处理之后,我们 APK 、成员等都被替换为随机、无意义名称,增加了代码阅读和理解困难程度,提高了反编译成本。...: -keep class twitter4j.** { *; } -dontwarn twitter4j.** 其他命令用法可参考 Android 系统提供默认混淆规则: #混淆不生成大小写混合...4.2 被反射元素 被反射使用、变量、方法、包等不应该被混淆处理。...其他应用程序访问组件可能会用到,如果经过混淆,可能会无法找到对应组件或者产生异常。...此外,我们每次使用 ProGuard 创建发布构建都都会覆盖之前版本 mapping.txt 文件,因此我们每次发布新版本都必须小心地保存一个副本。

92920

Android开发笔记(七十三)代码混淆与反破解

org.bouncycastle.** -dontwarn org.bouncycastle.** 下面是进行代码混淆注意事项: 1、jni方法要屏蔽混淆,因为so库要求包、函数名要完全一致...2、可能会在布局文件中直接引用或方法名,要屏蔽混淆。...4、jar包文件不要有特殊字符,比如说“(”、“)”等字符在混淆就会报错,文件最好只包含字母、横线、小数点。 5、使用WebView,会被js调用和方法,要屏蔽混淆。...具体做法除了要在proguard-project.txt加上如下说明外,还要在java代码调用一下js使用方法,才能保证内部类与方法都不会被混淆。...下面是打包apkmd5签名值截图 ? 下面是app运行时获取md5签名截图 ? 花指令 代码混淆通过对和方法名重命名,只是加大了破解难度,但并不能完全阻止代码被破解。

1.7K40

Android开发:请你吃一顿史上最全Android混淆大餐

从上面两张图可以看出:经过混淆处理之后,我们 APK 、成员等都被替换为随机、无意义名称,增加了代码阅读和理解困难程度,提高了反编译成本。...: -keep class twitter4j.** { *; } -dontwarn twitter4j.** 其他命令用法可参考 Android 系统提供默认混淆规则: #混淆不生成大小写混合...被反射元素 被反射使用、变量、方法、包等不应该被混淆处理。...其他应用程序访问组件可能会用到,如果经过混淆,可能会无法找到对应组件或者产生异常。...此外,我们每次使用 ProGuard 创建发布构建都都会覆盖之前版本 mapping.txt 文件,因此我们每次发布新版本都必须小心地保存一个副本。

3.8K30

Android混淆你了解多少?

APK 、成员等都被替换为随机、无意义名称,增加了代码阅读和理解困难程度,提高了反编译成本。...: 其他命令用法可参考 Android 系统提供默认混淆规则: #混淆不生成大小写混合 -dontusemixedcaseclassnames #不跳过非公共 -dontskipnonpubliclibraryclasses...被反射元素 被反射使用、变量、方法、包等不应该被混淆处理。...其他应用程序访问组件可能会用到,如果经过混淆,可能会无法找到对应组件或者产生异常。...此外,我们每次使用 ProGuard 创建发布构建都都会覆盖之前版本 mapping.txt 文件,因此我们每次发布新版本都必须小心地保存一个副本。

1.7K00

Android 安全】Android 应用 APK 加固总结 ( 加固原理 | 应用加固完整实现方案 | 源码资源 )

加密 ( Proguard keep 用法 | Proguard 默认混淆结果 | 保留及成员混淆结果 | 保留注解以及被注解修饰/成员/方法 ) 【Android 安全】DEX 加密 ( ProGuard...) 【Android 安全】DEX 加密 ( 代理 Application 开发 | 加载 dex 文件 | 使用反射获取方法创建本应用 dexElements | 各版本创建 dex 数组源码对比...Module 下 AndroidManifest.xml 配置元数据, // 应用真实 Application 全 // 解密后 dex...* @param srcFile 需要添加目录/文件 * @param zos zip输出流 * @param basePath 递归子目录完整目录 lib...-- app_name 值是该应用 Application 真实 真实 Application : kim.hsl.dex.MyApplication

7K61

Android Studio2.2下NDK开发初试

很久没更博了,这次来记录一下如何在Android Studio2.2进行NDK开发吧,NDK开发嘛,就是将C/C++代码编译成so库,供java调用(当然c调用java也是可以),还记得以前没有...,参数,返回值都写好后,: public static native String getHelloString(); 接着,Android Studio可以帮助我们构建hello-jni.c文件,...,c代码函数名相信很多人都已经发现了,和我们在java代码声明native不同,长了一大串,它格式其实是 JNIEXPORT 返回值类型 JNICALL Java_java__函数名...首先,我们需要获取java函数methodID,例如我这里是获取设置进度条进度方法,先获取方法所在jclass,需要注意是,这里FindClass第二个参数classname需要完整,因此需要包...,可以运行时会报如下错误 JNI ERROR (app bug): local reference table overflow (max=512) 这是JNI对java对象引用限制,防止内存使用过多

94850

Android 代码混淆机制

原理 android平台混淆原理是把代码中原来有具体含义,变量,方法名等名称全部替换成按顺序排列无意义英文字母a、b、c….这样代码结构没有变化,还可以运行得到一样结果,并且就算代码被反编译出来...(混淆后生产映射文件 map -> 转化后映射 -optimizations !...2.保留了所有的Native变量,所有中部分以设定了固定参数格式构造函数,枚举等等。(详细信息请参考\examples例子及注释) 3.需要序列化和反序列化不能被混淆。...(注:Java反射用到也不能被混淆) 4.保持R文件不被混淆,否则,你反射是获取不到资源id。.../下载proguard,目前我下载并使用proguard5.1 2.解压proguard5.1,执行 bin目录下proguardgui.bat文件打开ProGuard工具 从Android项目到处

1.3K20

Android-Proguard(混淆)

大家看到了,有两个混淆文件,proguard-android.txt和proguard-rules.pro,proguard-rules.pro是我们需要自己编写混淆文件,proguard-android.txt...除了proguard之外,还有一个DexGuard,是专门用来优化混淆Android应用。它包括资源混淆,字符串加密,加密和dex文件分割等。...  -keep public class * extends android.view.View #如果不需要保持,只需要保持该类下特定方法保持不被混淆, #需要使用keepclassmembers...自定义View默认也不会被混淆;所以像网上贴很多排除自定义View,或四大组件被混淆规则在Android Studio是无需加入; 4,与服务端交互使用GSON、fastjson等框架解析服务端数据...,所写JSON对象不混淆,否则无法将JSON解析成对应对象; 5,使用第三方开源库或者引用其他第三方SDK包,如果有特别要求,也需要在混淆文件中加入对应混淆规则; 6,有用到WebView

1.3K40

Android 实现代码混淆实例

作用: proguard是一个集文件压缩,优化,混淆和校验等功能工具 检测并删除无用,变量,方法和属性 优化字节码并删除无用指令 通过将,变量和方法名重命名为无意义名称实现混淆效果 还校验处理后代码...泛型不混淆 -keepattributes SourceFile,LineNumberTable 抛出异常保留代码行号 用最多指令 -keep class XXXX 保留不变,也就是不混淆...,而成员不保证。...当然也可以是继承XXX所有不混淆 -keepclasseswithmembers class XXXX 保留和成员,当然也可以是特定方法 5、哪些不混淆 反射中使用元素 与网络请求相关实体...使用注解元素 四大组件 WebView与JS交互 枚举 等 6、混淆文件编写 按照以上规则和基本语句,我们将混淆文件分为两个区域: 定制化区域:分为实体、第三方、js相关、反射相关,

93141

android混淆那些坑

ProGuard简介 在最新Android Studio 2.2.2版本创建Android工程,modulebuild.gradle有如下一段配置。...再压缩步骤ProGuard或从上述EntryPoint开始递归遍历,搜索那些成员在使用。对于没有被使用成员,就会在压缩阶段丢弃。...在混淆步骤ProGuard会对非EntryPoint和方法进行重命名。 Proguard使用 Proguard工具目录结构 ?...如果将bin目录添加到环境变量,就可以直接在命令行执行proguard,proguardgui和retrace命令了,避免每次都要输入java -jar + proguard.jar使用 使用proguard.jar...,混淆后就会生成映射文件 # 包含有->混淆后映射关系 # 然后使用printmapping指定映射文件名称 -verbose -printmapping priguardMapping.txt

3.1K60

读懂 Android 代码混淆

代码混淆影响到元素有 变量 方法名 包 其他元素 混淆目的 混淆目的是为了加大反编译成本,但是并不能彻底防止反编译....Proguard是一个集文件压缩,优化,混淆和校验等功能工具 它检测并删除无用,变量,方法和属性 它优化字节码并删除无用指令. 它通过将,变量和方法名重命名为无意义名称实现混淆效果....哪些不应该混淆 反射中使用元素 如果一些被混淆使用元素(属性,方法,,包等)进行了混淆,可能会出现问题,NoSuchFiledException或者NoSuchMethodException等...四大组件不建议混淆 Android四大组件我们都很常用,这些组件不能被混淆原因为 四大组件声明必须在manifest中注册,如果混淆后更改,而混淆后没有在manifest注册,是不符合Android...外部程序可能使用组件字符串,如果类混淆,可能导致出现异常 注解不能混淆 注解在Android平台中使用越来越多,常用有ButterKnife和Otto.很多场景下注解被用作在运行时反射确定一些元素特征

1.5K20

Eclipse与Android源码ProGuard工具使用

ProGuardandroid提供一个免费工具,它能够移除工程中一些没用代码,或者使用语义上隐晦名称来重命名代码、字段和函数等,达到压缩、优化和混淆代码功能。...使用语义混淆命名替换了代码、字段和函数等,使得其他人无法反编译获取源代码,起到对代码保护作用。...、d等毫无含义字母,这样就达到了混淆目的: 但在实际使用过程,我们会发现当前apk有些方法和,是要供外部使用,而此时混淆了名称,外部调用就会报错了,那么怎么解决这个问题?...Android源码环境ProGuard使用 在Google发布android源码,面对那么多代码和文件目录,此时该如何混淆代码与配置混淆文件呢?...有些方法和,是要供外部使用,而此时混淆了名称,外部调用就会报错了,那么怎么解决这个问题?

1.3K90
领券