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 always17039360で、これは文字列 を指しますCancel。ProGuard が行うことは、これらの参照をそれらが表す実際の数値に置き換えるため、 を使用するandroid.R.string.cancelと、 に置き換えられ17039360ます。

編集: R クラスはもう必要ないのでありません (それへのすべての参照は置き換えられました)。

于 2010-12-13T16:17:01.600 に答える