【发布时间】:2013-06-04 16:19:31
【问题描述】:
我注意到,在我最近创建的项目中,出现了一种新的 proguard 方法,即使用预先构建的脚本:
${sdk.dir}/tools/proguard/proguard-android.txt
这是未经优化的,并带有注释:
默认情况下优化是关闭的。 Dex 不喜欢代码运行 通过 ProGuard 优化和预验证步骤(并执行一些 这些优化本身)。
似乎遵循此建议意味着assumenosideeffects 无效。例如,这些常见任务:
#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*(...);
}
证明它不起作用:
if (release)
{
Assert.assertTrue("Proguard config error, Asserts have been left in", false);
}
是否有一个安全的中间地带,我可以应用优化来修剪assumenosideeffects 定义的调试,但又不会冒与 Dex 和 proguard 优化相关的问题的风险?
【问题讨论】: