言い換えれば、ネイティブライブラリを表すクラスの難読化を避けるために、何を-keep
コマンドで使用する必要がありますか? (JNAでは名前が同等のネイティブ関数、構造体などと一致する必要があるため)ProguardにJNAライブラリクラスの難読化を回避する方法を教えてください。
答えて
これは私が今のところ使用していたルールです:
-keepclassmembers class * extends com.sun.jna.** {
<fields>;
<methods>;
}
私はまだかかわらず、それを行うには良い方法があるかもしれないと思います。
どのようにすればいいですか?短くて簡潔なルールですか?より正確で正しい?私は、「もっと正しい」が重要な唯一の「より良い」ものだと思います。 – technomage
@technomage - 私は、JNA( 'Structure'、' Library'など)から特定のクラスを継承したクラスを保持する必要があることを誇りに思っています。理論的には、JNAクラスから拡張された他のクラスは、難読化するのが安全かもしれません。したがって、コードが不必要に少なくなるという意味では、より良いことです。私はそれを理解するためにJNAのドキュメントで時間を費やす必要がありますし、私のアプリケーションではそれは問題ではないので、それ以上検討するつもりはありません。 –
現時点では、私は構造体のサブクラスの公開フィールドとライブラリのサブクラスのパブリックメソッドを保持することに取り組んでいます。 – Trejkaz
JNAは、デフォルトでライブラリインタフェースのメソッド名を使用してネイティブ関数名を検索します。それら以外のものは難読化に耐えることができるはずです。
あなたのテストにすべてのJNAコールのカバレッジが含まれている場合は、ここで質問するほど速くテストできます。
EDIT
このコメント、私は「-keep」を提供する準備ができていないんだので、コマンド:)
あなたは確かに任意の構造体フィールドの排除や並べ替えを避ける必要があります考えてみましょう。
私の目標は、 "将来の保証"のルールを策定することです。そのため、より多くのJNAライブラリがコード化されていても、難読化は引き続き機能します。実際に私はすでに解決策を持っていますが、公平になるためには、[他の人に私がする前に答える機会を与えています](http://meta.stackexchange.com/questions/17463/can-i-answer-my-own-質問の前でも、質問の前に答えを知っていた)、 –
"構造体の削除や並べ替えは絶対に避けなければなりません。 - 私はそれを考慮しなかった、ありがとう。 –
- 1. 外部の.jarをProguard(Androidプロジェクト)の難読化から除外する方法を教えてください。
- 2. TComboBoxへのユーザタイプの回避方法を教えてください。
- 3. コンパイラによるブレークポイントの最適化の回避方法を教えてください。
- 4. sbt-proguardにjava * .jarsを含める方法を教えてください。
- 5. ForeignKeyをモデル化する方法を教えてください。
- 6. Proguard難読化エラー
- 7. Proguardのキープネームでアプリケーションを難読化しないでください
- 8. Proguardにクラス名の難読化を指示する方法
- 9. Proguardをjarファイル内のjarファイルに難読化する方法
- 10. Proguardに特定のデッドコードを難読化する方法
- 11. メールをRailsで読む方法を教えてください
- 12. ProGuardにメソッド名とクラス名をわかりにくくする方法を教えてください。
- 13. AndroidスタジオでProGuard難読化を有効にする方法は?
- 14. proguard難読化後のパラメータ化されていないマップ
- 15. Objective-Cの「友人」能力の欠如を回避する方法を教えてください。
- 16. ProGuardでクロージャーウーバーハウスを難読化する
- 17. ユーザーに毎回サインインする方法を教えてください。
- 18. Proguard - Kotlinデータクラスを難読化しない
- 19. Proguard難読化とレンダスクリプト
- 20. ファブリックオブジェクトを回転させる方法を教えてください。
- 21. ProguardとSBTでfat Scala Jarを難読化する方法
- 22. 難読化されていないAndroidでProguardを使用
- 23. Applescriptにクエリ結果をグループ化する方法を教えてください。
- 24. UIWindowをキーウィンドウにする方法を教えてください。
- 25. Sliceboxの実装方法を教えてください。私は困難を抱えています
- 26. ネストされたハッシュでグループ化する方法を教えてください。
- 27. ポイントから消える方法を教えてください。
- 28. YouTubeを断片化する方法を教えてください。
- 29. .gotoを非ブロック化する方法を教えてください。
- 30. ドッカーでコンテナをグループ化する方法を教えてください。
JNAの明示的な命名に依存するクラスメンバ。 – Vulcan