在proguard混淆后Android字符串变成随机数

Posted

技术标签:

【中文标题】在proguard混淆后Android字符串变成随机数【英文标题】:Android Strings turn to random number after proguard Obfuscation 【发布时间】:2011-05-24 17:58:37 【问题描述】:

我刚刚在 Eclipse 中使用了新的 ProGuard 工具来混淆我的应用程序。我使用dex2Jar 和JD-GUI 对其进行反编译以检查发生了什么。

我注意到 R 类中的所有内容都已转换为如下所示的随机数。

new SimpleCursorAdapter(localActivity, 2130903058, localCursor, arrayOfString, arrayOfInt);

2130903058 是一个布局文件。字符串和数组得到相同的处理。

反编译后的代码中没有R类,去哪了?对原始字符串的引用在哪里?

【问题讨论】:

【参考方案1】:

所有引用都是整数。如果您查看R.string,您会注意到所有成员都是ints。这是因为它们是指向实际字符串的指针。例如,android.R.string.cancel 始终为17039360,它指向字符串Cancel。 ProGuard 所做的是将这些引用替换为它们所代表的实际数字,因此如果您使用android.R.string.cancel,它将替换为17039360

编辑:没有 R 类,因为它不再需要(所有对它的引用都已被替换)。

【讨论】:

以上是关于在proguard混淆后Android字符串变成随机数的主要内容,如果未能解决你的问题,请参考以下文章

将新的 Google 登录添加到 Android 应用程序后的 Proguard 混淆问题

使用 Proguard 混淆 Cordova Android 应用程序似乎无济于事

使用 Proguard 混淆后的 SuperNotCalledException

Android proguard - Proguard 对代码进行了混淆,但某些文件是可读格式

Android Proguard混淆打包经验总结

使用 proguard 的 Android 混淆应用程序会不断混淆库 jar - 是吗?