ho notato che con progetti che ho creato da poco, arriva un nuovo approccio alla Proguard che è quello di utilizzare uno script pre-costruito:Che ottimizzazione è sicura che consente ancora -assumenosideeffects traslochi
$ { sdk.dir} /tools/proguard/proguard-android.txt
Questo è senza ottimizzazione, e viene fornito con un commento:
ottimizzazione è disattivata per impostazione predefinita. A Dex non piace l'esecuzione del codice attraverso i passaggi di ottimizzazione e preverify di ProGuard (ed esegue alcune delle di queste ottimizzazioni da solo).
Sembra che seguendo questo consiglio si intende che assumenosideeffects
non ha alcun effetto. Ad esempio, queste attività comuni:
#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*(...);
}
prova non sta funzionando:
if (release)
{
Assert.assertTrue("Proguard config error, Asserts have been left in", false);
}
C'è una via di mezzo sicuro, dove posso applicare l'ottimizzazione per tagliare fuori il debug come definito con assumenosideeffects
, ma senza rischiare i problemi associati con l'ottimizzazione di Dex e proguard?