不进行优化过程,如果配置了此指令,与优化相关的指令就会全部失效。
指定代码的优化次数,优化可以进行很多轮。${level}
的取值范围是[1,9]
,默认值是5。
示例:
-optimizationpasses 5
指定要启用和禁用的优化,在更精细的水平。
示例:
-optimizations !code/simplification/arithmetic,!code/allocation/variable,!field/*,!class/merging/*
具体优化点有很多个,我们也可以控制不需要进行哪些优化。!
就表示不要进行那个与优化。
assumenosideeffects
拆开是assume no side effects
,假定无效的意思,就是说被标识的代码是无效代码,可以被删掉。 我们通常用此指令删除一些日志打印的类和相关方法调用。
示例1:
-assumenosideeffects class android.util.Log {
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}
-keep class android.util.Log {
*;
}
示例2:
-assumenosideeffects class com.fpliu.newton.log.Logger {
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}
-keep class com.fpliu.newton.log.Logger {
*;
}
此属性允许修改访问修饰符,因为有些时候,使用其他访问修饰符会更好。
指定接口可以合并,即使实现类没实现所有的方法。该选项可以通过减少类的总数减少输出文件的大小。