1

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

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

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

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

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

4

1 回答 1

5

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

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

于 2010-12-13T16:17:01.600 回答