我刚刚在eclipse中使用了新的ProGuard工具来混淆我的应用程序。我使用dex2Jar和JD-GUI对其进行了反编译,以检查发生了什么。
我注意到R类中的所有内容都已转换为随机数,如下所示。
new SimpleCursorAdapter(localActivity, 2130903058, localCursor, arrayOfString, arrayOfInt);
2130903058是一个布局文件。字符串阵列得到相同的处理。
反编译代码中没有R类,它在哪里消失了?原始字符串的引用在哪里?
答案 0 :(得分:5)
所有引用都是整数。如果您查看R.string
,您会发现所有成员都是int
。这是因为它们是实际字符串的指针。例如,android.R.string.cancel
始终为17039360
,其指向字符串Cancel
。 ProGuard所做的是将这些引用替换为它们所代表的实际数字,因此如果您使用android.R.string.cancel
,它将替换为17039360
。
编辑:没有R类,因为不再需要它(所有对它的引用都已被替换)。