如何在Dexguard混淆中禁用非ASCII字符?

3

我们正在使用Crittercism来分析应用程序崩溃情况,但由于我们还使用了默认混淆选项的DexGuard,因此Crittercism无法使用DexGuard生成的mappings.txt对混淆后的堆栈跟踪进行反混淆。

所以,我的问题很简单:

如何禁用DexGuard混淆的非ASCII字符?

顺便说一下,我们正在使用Gradle构建系统。

1个回答

2

想知道您为什么认为禁用非ASCII字符会修复Crittercism对DexGuard混淆堆栈跟踪的处理问题?据我所知,他们需要使用DexGuard中的ReTrace.jar而不是ProGuard(抱歉,我不知道是否可能关闭Non-ASCII字符)。

对我来说,这似乎是Crittercism的问题,他们是否支持DexGuard?我大约一年前问过他们的支持团队(support@crittercism.com)关于DexGuard支持,它甚至没有出现在他们的路线图上。

如果您不绑定于Crittercism,我知道Crashlytics和Hockeyapp支持DexGuard(这也是我切换到Crashlytics的原因之一)。

更新

今天我偶然发现了这个。您可以覆盖DexGuard的默认混淆词典并定义仅ASCII字符。

在您的dexguard-project.txt中定义。

-obfuscationdictionary dictionary.txt
-classobfuscationdictionary classdictionary.txt

根据Crittercism的说法,他们目前不支持DexGuard。我尝试提出建议,但他们的社区门户网站对我来说无法正常工作(我已经联系了他们的支持团队)。关于禁用非ASCII字符以修复反混淆问题,至少这是我的主要假设,因为这是dexguard和proguard混淆堆栈跟踪之间的主要区别。由于我们目前有几个崩溃堆栈跟踪无法通过Crittercism服务进行反混淆,因此我将再次联系他们的支持部门。 - arne.jans
顺便说一句,谢谢你提供有关Crashlytics等替代方案的信息,我会研究一下。目前,一个DexGuard设置来禁用非ASCII字符就足以更新应用程序。 - arne.jans
据我所知,DexGuard不仅仅使用非ASCII字符,即使没有额外的DexGuard特定配置,因此您(或Crittercism)仍需要使用DexGuard ReTrace工具。 - scottyab
如果您提到字符串加密等内容,我只在特定的敏感类中使用这些功能,而不是一般性地使用。如果您提到混淆和优化的基本过程,您是否有任何参考信息可以提供给我?那将是一些有用的信息,可以传递给Crittercism。但是,如果我没有记错的话,使用Crittercism提供的功能,我没有问题追踪不包含非ASCII字符的堆栈跟踪。 - arne.jans
1
覆盖字典文件的方法是正确的方法。您只需使用空字典文件进行覆盖,如下所示:-obfuscationdictionary emptydictionary.txt -classobfuscationdictionary emptyclassdictionary.txt这是由制作者Eric LaFortune确认的正确方法。因此,您是完全正确的,这是被接受的答案。 - arne.jans
请查看Eric的这篇帖子,他在其中提到了这个问题:https://dev59.com/Vprga4cB1Zd3GeqPsM2D#45676498 - Ben Groot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接