如何覆盖其他混淆规则

How to override other proguard rules

我希望删除具有以下签名的 class A

package com.example

class A : Base {}

来自 thirdpartylib.aar 自带的一套 proguard/r8 规则,其中之一是

-keep public class * extends com.example.Base

但是我希望删除 class A,因为我知道这不会被使用。我如何实现此覆盖。

下面的规则不起作用,因为 whyareyoukeeping 发出上面的规则。

-keep class !com.example.A

我想弄清楚混淆规则是否有优先权。是否可以将规则声明为更高优先级?提前致谢。

首先规则的“优先级”就是最宽泛的规则优先。因此,如果一条规则保留了某些东西,则另一条规则不可能将其拿走。

现在覆盖 jar/aar 中包含的规则的唯一方法是分叉它并替换规则。可以通过具有替换版本的本地 Maven 存储库来做到这一点。

但是,AGP 7.3 将包含一个覆盖库中规则的功能,有关详细信息,请参阅 https://issuetracker.google.com/37097003。可以通过 AGP 7.3 金丝雀来试用。