微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

@Keep 注释和保留规则不适用于通过启用 Android R8 混淆处理嵌套在类或其他接口中的接口

如何解决@Keep 注释和保留规则不适用于通过启用 Android R8 混淆处理嵌套在类或其他接口中的接口



我在我的 Android 库中使用 Android R8 混淆。 在库的客户端项目的应用程序模块中包含 AAR 文件后,我收到了在类或其他接口中声明的接口的编译时错误

例如公共接口之一是 MyPublicInterface:

interface InterfaceA {
    fun a()
}

interface InterfaceB {
    fun b()
}

class ClassA {
    interface nestedInterfaceOfA {
        fun nia()
    }
}

interface MyPublicInterface : InterfaceA,InterfaceB,ClassA.nestedInterfaceOfA

接口 MyPublicInterface 由应用程序模块使用。

我在编译应用程序模块时遇到以下错误

"Cannot access ClassA$nestedInterfaceOfA which is a supertype of MyPublicInterface. Please make sure you have the required dependencies in the classpath."
"unresolved supertypes ClassA$nestedInterfaceOfA"

我尝试了以下所有规则:

-keepclasseswithmembers public interface * {
*;
}
-keepclasseswithmembernames public interface * {
*;
}
-keep public interface *$* {
*;
}
-keepclasseswithmembers public interface *$* {
*;
}
-keepclasseswithmembernames public interface *$* {
*;
}
-keepattributes InnerClasses,Signature

我尝试通过在代码中显式添加 @Keep 注释并显式添加特定接口的保持规则。但是没有用。

注意:该库的整个代码都在 Kotlin 中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。