首页
学习
活动
专区
工具
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/)了解更多关于这些产品的详细信息和使用指南。

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

相关·内容

ProGuard 在 Android 上的使用姿势

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

2.6K40

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

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

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

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

    46620

    混淆的另一重境界

    实现原理 先来看看Android gradle plugin在构建时最后所走的几个task: ?...中内容清空 如果需要混淆依赖库,则删除依赖库中的proguard.txt文件 遍历一遍mapping.txt获取所有Java类名的的映射关系得到一个Map 拿映射Map替换AndroidManifest.xml...里的Java原类名 拿映射Map替换layout、menu和value文件夹下的xml的Java原类名 重新跑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.3K50

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

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

    1.9K40

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

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

    97320

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

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

    5.2K30

    【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

    8.5K61

    Android混淆你了解多少?

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

    1.9K01

    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.5K20

    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对象引用的限制,防止内存使用过多

    97750

    读懂 Android 中的代码混淆

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

    1.6K20

    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.4K40

    android混淆那些坑

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

    3.3K60

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

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

    1.3K90

    Android 混淆从入门到精通

    说在前面 这里我们直接用Android Studio来说明如何进行混淆,Android Studio自身集成Java语言的ProGuard作为压缩,优化和混淆工具,配合Gradle构建工具使用很简单,只需要在工程应用目录的...ProGuard作用 压缩(Shrinking):默认开启,用以减小应用体积,移除未被使用的类和成员,并且会在优化动作执行之后再次执行(因为优化后可能会再次暴露一些未被使用的类和成员)。....* 一颗星表示只是保持该包下的类名,而子包下的类名还是会被混淆;两颗星表示把本包和所含子包下的类名都保持;用以上方法保持类后,你会发现类名虽然未混淆,但里面的具体方法和变量命名还是变了,这时如果既想保持类名...自定义的View默认也不会被混淆;所以像网上贴的很多排除自定义View,或四大组件被混淆的规则在Android Studio中是无需加入的; 与服务端交互时,使用GSON、fastjson等框架解析服务端数据时...*; } 使用enum类型时需要注意避免以下两个方法混淆,因为enum类的特殊性,以下两个方法会被反射调用,见第二条规则。

    1.4K90
    领券