0

Proguard では、ID などの R 内部クラスのフィールド名を保持することをお勧めします。ProGuard はレイアウト xml ファイルを処理しないためです。あなたは壊れたリンクで終わるでしょう

しかし、Antを介してProGuardに渡す前にそれを行う必要があるとしても、R $ idのようなクラスを他の方法で難読化することはできません。

これを尋ねているのは、id がbtnSaveArticleのボタンがある場合、ハッカーにとって、名前を見るだけで周りのコードが何をしているかを簡単に把握できるようになるからです。

リソース ファイルを含むすべてのソース コードを別のフォルダーにコピーし、ant を使用して regex を実行して R.id の名前を変更し、レイアウト xml ファイルでそれらが表示される場所を変更してから、何らかの方法で実行することは可能でしょうか? Rクラスを再作成するために生成しますか?

または、TR などの翻訳クラスを作成し、それを R.class のフィールドにマップすることもできます。

例えば。

TR.btnSaveArticle = R.id.DHTXM; 

DHTXM は、レイアウト XML で使用できる意味の少ない単語です。ただし、コードでは常に TR.btnSaveArticle を参照しますが、これは proguard によって難読化されます。

これを達成する方法はありますか、それとも時間を無駄にしていますか?

4

4 に答える 4

2

以下を使用して、Proguard構成ファイルに追加してください

-keepclassmembers class **.R$* {
public static <fields>;}
于 2013-12-09T09:37:37.913 に答える
2

これをお願いしているのは、id btnSaveArticle のボタンがある場合、ハッカーにとって、名前を見るだけで周りのコードが何をしているかを簡単に把握できるようになるためです。

階層ビューを使用すると、名前に関係なく、「記事を保存」ボタンの実際の ID を特定するのに 30 秒もかかりません。また、少しのカスタム ツールを使用することで、さらに高速なソリューションを思い描くことができます。

私は時間を無駄にしていますか?

私見、はい。

于 2013-08-16T12:54:10.260 に答える
0

Android の既定の構成では、ProGuard は、コードでイントロスペクションを実行しない限り、R クラスを完全に削除します。後者の場合、ProGuard は、イントロスペクションを壊さないように、フィールドを元の名前で保持します。

そうは言っても、リソース名はリソース XML ファイルから取得することもできますが、ProGuard はそのまま残しています。

于 2013-08-17T23:01:25.147 に答える