1

在使用 R8 构建我的应用程序时,我需要帮助来解决问题。我有一项服务可以执行一项工作然后终止。但是,当我使用 R8 而不是 Proguard 时,服务永远不会终止。使 R8 构建工作的唯一方法是留在 android.util.Log 类中,特别注释掉该位:

-assumenosideeffects class android.util.Log {
    public static *** v(...);
    public static *** d(...);
    public static *** i(...);
    public static *** w(...);
    public static *** e(...);
}

任何人都可以阐明 R8 正在做什么导致这种行为或引导我朝着正确的方向前进吗?或者是假设副作用片段的问题?

4

1 回答 1

1

在您构建项目时,R8 似乎删除了一些重要代码。请添加-printusage {output-dir}/usage.txt到您的proguard-rules.pro文件中,然后构建项目,然后检查文件usage.txt- 它包含有关已删除代码的报告。现在您可以尝试使用更多自定义保留规则来解决此问题。

请参考此博客以了解 R8 https://medium.com/better-programming/shrink-your-android-app-with-r8-afe17c4d393

于 2020-04-08T10:44:26.537 回答