2013-06-08 8 views
6

Ben projelerle Geçenlerde oluşturduk fark ettik sağlayan güvenlidirNe optimizasyon önceden oluşturulmuş bir komut dosyası kullanmaktır ProGuard için yeni bir yaklaşım gelir ki, hala -assumenosideeffects kaldırma

Optimizasyon varsayılan olarak kapalıdır: sdk.dir} Bu optimizasyon olmadan, ve bir açıklama ile birlikte geliyor

/tools/proguard/proguard-android.txt. Dex, ProGuard optimizasyonu ve ön adımlarını kullanarak kod çalıştırmayı sevmez (ve bu optimizasyonların bazılarını kendi başına gerçekleştirir). Bu tavsiyenin ardından assumenosideeffects'un hiçbir etkisi olmadığı anlaşılmaktadır. Örneğin, bu ortak görevleri:

#Remove logging 
-assumenosideeffects class android.util.Log { 
    public static boolean isLoggable(java.lang.String, int); 
    public static int v(...); 
    public static int i(...); 
    public static int w(...); 
    public static int d(...); 
    public static int e(...); 
} 

#Remove asserts 
-assumenosideeffects class junit.framework.Assert { 
    public static *** assert*(...); 
} 

Kanıtı işe yaramıyor:

if (release) 
{ 
    Assert.assertTrue("Proguard config error, Asserts have been left in", false); 
} 

mi var assumenosideeffects ile tanımlanan ben hata ayıklama dışarı kesmek için optimizasyon uygulayabilirsiniz güvenli bir orta yol, ancak riske atmadan Dex ve proguard optimizasyonu ile ilişkili sorunlar?

cevap

1

Bulduğum çözüm, yalnızca assumenosideeffects komutunun bağlı olduğu optimizasyonları açık bir şekilde etkinleştirmektir. -dontoptimize tek çağrı optimizasyonlar devre dışı bırakır çünkü project.properties dosya, optimize SDK proguard yapılandırma dosyası belirtmek gerektiğini

# proguard-project.txt 

# Remove all Verbose/Debug logging 
-optimizations code/removal/simple,code/removal/advanced 
-dontobfuscate 
-assumenosideeffects class android.util.Log { 
    public static int v(...); 
    public static int d(...); 
} 

Not: Yani bir örnek proguard yapılandırma aşağıdaki olurdu.

# project.properties 

proguard.config=${sdk.dir}/tools/proguard/proguard-android-optimize.txt:proguard-project.txt 
İlgili konular