我想为Android创建一个kotlin库,其中包含一些顶级功能。

我创建了一个android库项目。

我添加了一些顶级功能和一些类

// filename TestMethodFirst.kt
fun testMethodFirst() {}
// filename TestClass.kt
class TestClass() {}

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

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

库中的类已解决,并且可以顺利导入。顶级功能尚未解析,因此无法使用。我尝试手动添加导入,但是也无法正常工作。当我尝试使用Java中的顶级函数作为静态方法执行时,它就在工作。

这不行
// filename Test1.kt
fun test1() {
    testMethodFirst()
}

这有效
// filename Test2.kt
fun test1() {
    TestClass()
}

这有效
// filename Test3.java
class Test {
    void test() {
        TestMethodFirstKt.testMethodFirst();
    }
}

我已经在AS 4.1 Canary 7和AS 3.6.2中进行了尝试

附件包含库项目和aar库

Project

Generated aar

最佳答案

对于Android Studio 4.1 Canary,为this is a known bug, until Canary 9, fixed in Canary 10。基于this comment,尝试添加:

android {
    packagingOptions {
        excludes -= "/META-INF/*.kotlin_module"
    }
}

这对我有用,并且针对Canary 10推出了更永久的解决方案。

09-05 03:51