23
我有一堆類使用例如一個@Singleton註釋像這樣在Proguard中保留帶註釋的類
@Singleton
public class ImageCache
我想保留。我如何配置proguard -keep語句,使其適用於所有具有該註釋的類。
順便說一句,我需要這個在Android上使用Roboguice的應用程序,這就是爲什麼我添加了標籤。可能幫助別人。
我有一堆類使用例如一個@Singleton註釋像這樣在Proguard中保留帶註釋的類
@Singleton
public class ImageCache
我想保留。我如何配置proguard -keep語句,使其適用於所有具有該註釋的類。
順便說一句,我需要這個在Android上使用Roboguice的應用程序,這就是爲什麼我添加了標籤。可能幫助別人。
ProGuard基於具有通配符的類似java的配置。它確實需要完全合格的類名稱。這應該工作:
-keep @com.google.inject.Singleton public class *
首先定義一個註解
public @interface DoNotStrip {}
然後把這個proguard.cfg:
-keep,allowobfuscation @interface com.something.DoNotStrip
# Do not strip any method/class that is annotated with @DoNotStrip
-keep @com.something.DoNotStrip class *
-keepclassmembers class * {
@com.something.DoNotStrip *;
}
這一個是一塊金子。保持jackson 1,jackson 2和gson註釋類是非常有用的。 ;)埃裏克,我認爲proguard手冊應該更明確地保留註釋的類,方法,字段等。 – Snicolas 2013-06-07 08:50:04
我還必須添加keepclassmembers。但是你提供了一個好主意,所以+1 – 2015-05-09 22:23:49
另外,如果您使用自定義註釋,請確保RetentionPolicy是CLASS或RUNTIME,否則proguard將無法找到它們。 – Alex 2017-03-10 13:14:27