gpt4 book ai didi

android - 什么优化是安全的,仍然允许 -assumenosideeffects 去除

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:17 33 4
gpt4 key购买 nike

我注意到在我最近创建的项目中,出现了一种新的混淆方法,即使用预构建的脚本:

${sdk.dir}/tools/proguard/proguard-android.txt

这没有优化,并带有注释:

Optimization is turned off by default. Dex does not like code run through the ProGuard optimize and preverify steps (and performs some of these optimizations on its own).

似乎遵循此建议意味着 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 和混淆器优化相关问题的风险?

最佳答案

我找到的解决方案是明确仅启用 assumenosideeffects 命令所依赖的优化。因此,混淆器配置示例如下:

# 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(...);
}

请注意,project.properties 文件应指定 optimize SDK proguard 配置文件,因为单次调用 -dontoptimize 会禁用优化。

# project.properties

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

关于android - 什么优化是安全的,仍然允许 -assumenosideeffects 去除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16999679/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com