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