gpt4 book ai didi

android - R8 将抽象类的 "protected"方法更改为 "public"而没有 -allowaccessmodification 标志

转载 作者:行者123 更新时间:2023-12-03 22:00:31 30 4
gpt4 key购买 nike

我有一个关于 R8 的问题。在 MyLib我有公共(public)摘要 MyLibsClass我在其中保护了方法。 MyChildClass延伸自 MyLibsClassMyApp在 R8 的魔法之后,MyLibsClass 中的所有 protected 方法(包括 protected 抽象)改成公开的,当然在MyChildClass我收到 "attempting to assign weaker access privileges ('protected'); was 'public')试图覆盖 protected 抽象方法的问题。
附加信息

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 ,

DON'T USE DEFAULT PROGUARD SETTINGS FOR LIBRARIES



allowAccessModification在默认的 proguard 设置中启用,该设置位于 Android SDK (\Android\Sdk\tools\proguard\proguard-android-optimize.txt)我的错误是将它用于我的图书馆。

引自 proguard manual

you probably shouldn't use this option when processing code that is to be used as a library, since classes and class members that weren't designed to be public in the API may become public.



因此,如果有人遇到同样的问题,我建议您为 proguard 创建自己的基本配置文件。并复制过去的整个默认配置而不使用 "allowAccessModification"进去。

另外如果有人更感兴趣,可以追踪 this问题。希望能在近功能中为库获得单独的配置文件。

关于android - R8 将抽象类的 "protected"方法更改为 "public"而没有 -allowaccessmodification 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59681793/

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