2012-07-23 23 views
23

'da notlandırılmış sınıfı tutun. Ben tutmak istiyorum böyleceProguard

@Singleton 
public class ImageCache 

gibi bir @Singleton açıklama. Bir proguard -keep deyimini, bu açıklamaya sahip olan tüm sınıflara uygulanacak şekilde nasıl yapılandırabilirim?

Btw bağlam açısından Android'de Roboguice kullanan bir uygulama için buna ihtiyacım var, bu yüzden etiketleri ekledim. Başkalarına yardım edebilirim.

cevap

32

ProGuard, vahşi kartlı bir java benzeri yapılandırmaya dayanmaktadır. Tam nitelikli sınıf isimleri gerektirir. Bu çalışması gerekir:

-keep @com.google.inject.Singleton public class * 
+6

Bu seferki altın bir parçasıdır. Jackson 1, Jackson 2 ve Gson açıklamalı dersleri tutmak için çok yararlı olur. ;) Eric, proguard kılavuzunun açıklamalı sınıflar, yöntemler, alanlar vb. Hakkında daha açık olması gerektiğine inanıyorum. – Snicolas

+0

Ayrıca, keepclassmembers eklemek zorunda kaldım. Ama iyi bir fikir verdiniz, bu yüzden +1 –

+2

Ayrıca, Özel Açıklamalar kullanırsanız, RetentionPolicy'nın SINIF veya RUNTIME olduğundan emin olun, aksi takdirde, proguard onları bulamayacaktır. – Alex

2

İlk Sonra proguard.cfg Bu koymak bir ek açıklama

public @interface DoNotStrip {} 

tanımlayın:

-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 *; 
}