1

ProGuard の難読化を適切に機能させるには、ライブラリを除外する (たとえば、難読化しない) 必要があるという規則があることはわかっています。ここで、すべてのチュートリアルが終了します。

フードの下で、これの理由は何ですか? 私たちのプロジェクトと同じパッケージ名を持っていないからですか?そのようなライブラリを ProGuard の難読化から除外するのを忘れたという恐ろしい話に直面したため、これが必須であることはわかっています。

この規則は、私たち自身の図書館プロジェクトにも適用されますか? パッケージ名も異なりますが、パブリック プロジェクトは難読化する必要はありませんが、独自のライブラリは難読化する必要があります。

明らかに、私は ProGuard の知識を完全に持っており、上で尋ねた質問では明確で理解しやすい答えが得られないため、質の高い難読化計画を立てることができません。

4

2 に答える 2

3

ライブラリ プロジェクトは難読化して最小化できます。ライブラリを難読化または縮小化から完全に除外する必要はありません。

一部のライブラリは、適切に動作することを保証するために特別なルールを必要とし、その原因は独自のライブラリにまで及びます。問題は、それらがライブラリであるという事実から生じるのではなく、問題はライブラリの機能に関連しています。

たとえば、GSON では、次の行を追加する必要があります。

-keepattributes Signature

彼らのサンプル proguard ファイルは便利にこの説明を提供します:

# Gson uses generic type information stored in a class file when working with fields.
# Proguard removes such information by default, so configure it to keep all of it.

同様の理由で、GSON がシリアライズまたはデシリアライズするモデルを無視するように proguard に指示する必要があります。GSON はリフレクションを使用して動作するため、メンバー フィールドが難読化されていないことを確認する必要があります。

過去に Facebook で問題が発生したことを思い出すようですが、現在、Facebook のドキュメントには、Proguad で特別なことをする必要はないと明示的に記載されています。

于 2015-06-11T20:32:17.273 に答える