我无法使用自定义 Kotlin 库中的顶级函数

use*_*643 8 java android kotlin aar

我想为 android 创建一个包含一些顶级函数的 kotlin 库。

我创建了一个 android 库项目。

我添加了一些顶级函数和一些类

// filename TestMethodFirst.kt
fun testMethodFirst() {}
Run Code Online (Sandbox Code Playgroud)
// filename TestClass.kt
class TestClass() {}
Run Code Online (Sandbox Code Playgroud)

我已经使用 ./gradlew build 构建了库

我已将此库作为 aar 库包含到另一个项目中

库中的类已顺利解析并导入。顶级函数尚未解析,因此无法使用。我尝试过手动添加导入,但它也不起作用。当我尝试使用 java 中的顶级函数作为静态方法执行时,它就可以工作了。

这不起作用

// filename Test1.kt
fun test1() {
    testMethodFirst()
}
Run Code Online (Sandbox Code Playgroud)

这有效

// filename Test2.kt
fun test1() {
    TestClass()
}
Run Code Online (Sandbox Code Playgroud)

这有效

// filename Test3.java
class Test {
    void test() {
        TestMethodFirstKt.testMethodFirst();
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过使用 AS 4.1 Canary 7 和 AS 3.6.2

附件包含库项目和aar库

项目

生成的aar

Com*_*are 5

对于 Android Studio 4.1 Canary,这是一个已知错误,直到 Canary 9 为止,已在 Canary 10 中修复。根据此评论,尝试添加:

android {
    packagingOptions {
        excludes -= "/META-INF/*.kotlin_module"
    }
}
Run Code Online (Sandbox Code Playgroud)

这对我有用,并且 Canary 10 计划提供更永久的修复。