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