Android中使用Proguard的简易模式

Android中使用Proguard的简易模式,android,proguard,Android,Proguard,当准备发布Android应用程序时,我们会使用Proguard混淆代码,这可能会破坏应用程序 所以,一旦出现错误,我们会一次又一次地修改它并构建发布测试,有没有一种简单的方法可以做到这一点 另外,是否可以在Android Stuido中直接看到模糊代码?回溯 回溯是通过将模糊化的名称替换为原始源代码中使用的名称,使模糊化的堆栈跟踪具有可读性。为了能够回溯,请确保为要测试或发送给某人的每个构建保存mapping.txt。映射对于每个构建过程都是唯一的 映射可以在中找到 appModule/buil

当准备发布Android应用程序时,我们会使用Proguard混淆代码,这可能会破坏应用程序

所以,一旦出现错误,我们会一次又一次地修改它并构建发布测试,有没有一种简单的方法可以做到这一点


另外,是否可以在Android Stuido中直接看到模糊代码?

回溯

回溯是通过将模糊化的名称替换为原始源代码中使用的名称,使模糊化的堆栈跟踪具有可读性。为了能够回溯,请确保为要测试或发送给某人的每个构建保存
mapping.txt
。映射对于每个构建过程都是唯一的

映射可以在中找到

appModule/build/outputs/mapping/release/mapping.txt
对于回溯,有一个名为proguardgui的方便工具,可在中找到

$ANDROID_HOME/tools/proguard/bin/proguardgui.sh
*.sh
对于UNIX系统,对于其他平台,需要不同的扩展)

选择“ReTrace”,添加mapping.txt(确保使用为该apk构建生成的mapping.txt),并将模糊的堆栈跟踪粘贴到窗口中。按右下角的“ReTrace”键,您应该会得到带有除臭名称的堆栈跟踪

这是我在互联网上找到的输入示例的屏幕截图

反编译

另外,是否可以直接在Android Stuido中看到模糊代码

不,但是您可以通过将dex转换为jar并对其进行反编译来查看代码

dex2jar myapp.apk
jd-gui myapp-dex2jar.jar
dex2jar页面

JDGUI从第页开始

我通常遵循的实践

对我来说,只要我添加一个库,我就会为库添加一个proguard配置(通常由库开发人员提供)

还有一个名为的项目,虽然它们大多已经过时,所以请确保首先从library developer处进行检查

为了便于管理,我使用将每个库的proguard配置拆分到一个单独的文件中。下面是我的build.gradle BuildType发行版中的一个片段

proguardFile getDefaultProguardFile('proguard-android.txt')
proguardFile 'proguard-dart.pro'
proguardFile 'proguard-parceler.pro'
proguardFile 'proguard-retrolambda.pro'
proguardFile 'proguard-rules.pro'
proguardFile 'proguard-rx-java.pro'
proguardFile 'proguard-support-design.pro'
proguardFile 'proguard-support-v7-appcompat.pro'
对于
Firebase
序列化中使用的对象,添加
@Keep
注释

对于
Gson
使用的字段,在对象上添加
@SerializedName
注释或使用
@Keep


每当我使用反射(或动画,技术上是相同的)时,我都会确保添加proguard规则,以便在编写代码之后,反射可以访问代码。最后可能没有什么需要修复的。

这不是你想要的,但是dump.txt、seeds.txt、mapping.txt、usage.txt呢