Android Jack 编译器没有从 proguard 规则中删除日志
Posted
技术标签:
【中文标题】Android Jack 编译器没有从 proguard 规则中删除日志【英文标题】:Android Jack Compiler not removing logs from proguard rules 【发布时间】:2016-10-22 06:36:29 【问题描述】:我尝试过使用:
-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(...);
在 Proguard 中删除日志,如果我不使用新的 Jack 编译器,它会很好用
defaultConfig
...
jackOptions
enabled true
compileOptions
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
当我编译 apk 时,我注意到所有日志在生产版本中都处于活动状态。是否有错误、错误或“-assumenosideeffects”尚不支持?
我可以在最终 apk 中从日志中删除字符串吗?
【问题讨论】:
【参考方案1】:使用 Jack 编译器工具链时,不会使用 ProGuard。相反,Jack 将使用自己的工具来应用指定的规则。
并非所有 ProGuard 规则都受支持(请参阅支持的 directives):-assumenosideeffects
不受支持。
注意:DexGuard,ProGuard 的商业版本支持 ProGuard 的所有指令,并且可以与 Jack 结合使用,从 7.2 版本开始,将在 1-2 周内发布。
【讨论】:
是的,但是如果您查看source.android.com/source/jack.html,您会看到 -assumenosideeffects 列在“忽略的选项”中,但不起作用,或者尚未实施。 Jack 在遇到这样的规则时不会抛出错误,但它不会对它做任何事情,这就是我不支持的意思。 那么 Jack 会导致生产 APK 中的安全漏洞?以上是关于Android Jack 编译器没有从 proguard 规则中删除日志的主要内容,如果未能解决你的问题,请参考以下文章
Android 系统编译不过了报错Try jack-diagnose,SSL error when connecting to the Jack server
如何在 android studio 中添加 *.jack?