1



我在我的 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 注释以及为特定接口显式添加 keep 规则。但它没有用。

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

4

1 回答 1

0

上述指定问题现已解决。我为此使用了以下解决方案:

安卓工作室版本:4.1.x

Android 工具版本:( classpath 'com.android.tools.build:gradle:4.1.1'版本出现问题4.0.2

Gradle 版本:(6.5.1版本出现问题6.3

于 2021-01-14T15:44:13.647 回答