2012-05-11 7 views

答えて

4

これは私が今のところ使用していたルールです:

-keepclassmembers class * extends com.sun.jna.** { 
    <fields>; 
    <methods>; 
} 

私はまだかかわらず、それを行うには良い方法があるかもしれないと思います。

+0

どのようにすればいいですか?短くて簡潔なルールですか?より正確で正しい?私は、「もっと正しい」が重要な唯一の「より良い」ものだと思います。 – technomage

+0

@technomage - 私は、JNA( 'Structure'、' Library'など)から特定のクラスを継承したクラスを保持する必要があることを誇りに思っています。理論的には、JNAクラスから拡張された他のクラスは、難読化するのが安全かもしれません。したがって、コードが不必要に少なくなるという意味では、より良いことです。私はそれを理解するためにJNAのドキュメントで時間を費やす必要がありますし、私のアプリケーションではそれは問題ではないので、それ以上検討するつもりはありません。 –

+0

現時点では、私は構造体のサブクラスの公開フィールドとライブラリのサブクラスのパブリックメソッドを保持することに取り組んでいます。 – Trejkaz

1

JNAは、デフォルトでライブラリインタフェースのメソッド名を使用してネイティブ関数名を検索します。それら以外のものは難読化に耐えることができるはずです。

あなたのテストにすべてのJNAコールのカバレッジが含まれている場合は、ここで質問するほど速くテストできます。

EDIT

このコメント、私は「-keep」を提供する準備ができていないんだので、コマンド:)

あなたは確かに任意の構造体フィールドの排除や並べ替えを避ける必要があります考えてみましょう。

+0

私の目標は、 "将来の保証"のルールを策定することです。そのため、より多くのJNAライブラリがコード化されていても、難読化は引き続き機能します。実際に私はすでに解決策を持っていますが、公平になるためには、[他の人に私がする前に答える機会を与えています](http://meta.stackexchange.com/questions/17463/can-i-answer-my-own-質問の前でも、質問の前に答えを知っていた)、 –

+0

"構造体の削除や並べ替えは絶対に避けなければなりません。 - 私はそれを考慮しなかった、ありがとう。 –

関連する問題