我对 R8 有疑问。在MyLib
我有公开摘要MyLibsClass
其中我有受保护的方法。MyChildClass
延伸自MyLibsClass
in MyApp
在 R8 的魔法之后,所有受保护的方法(包括受保护的抽象)MyLibsClass
都变成了公共的,当然在MyChildClass
我越来越"attempting to assign weaker access privileges ('protected'); was 'public')
尝试覆盖受保护的抽象方法时出现问题。
附加信息
gradle-6.0.1
MyLib的build.gradle
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'
}
proguard-rules.pro
-keep class com.example.mylib.*{
public protected *; }
-keep class com.example.mylib.*$*{
public protected *; }
有人遇到过此类问题或知道解决此问题的方法吗?
所以根据讨论here ,
不要对库使用默认的 PROGUARD 设置
as allowAccessModification
在默认 proguard 设置中启用,该设置位于 Android SDK 中(\Android\Sdk\tools\proguard\proguard-android-optimize.txt)
我的错误是在我的图书馆中使用它。
引文来自混淆器手册
在处理以下代码时,您可能不应该使用此选项
被用作库,因为类和类成员不是
设计为公开的 API 可能会公开。
因此,如果有人遇到同样的问题,我建议您创建自己的基本配置文件proguard
并复制过去的整个默认配置,而不需要"allowAccessModification"
进去。
另外,如果有人更感兴趣,您可以跟踪this问题。希望能够为附近的功能中的库获得单独的配置文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)