将生成的 AAR 与可组合项一起使用时未解析的引用

Unresolved reference when using a generated an AAR with Composables

我正在将我的 FloatingActionButtonSpeedDial 库移植到 Compose,我已经到了我应该将新的 Compose 库发布到 Maven Central 的步骤,但是,当我生成 AAR 时,所有可组合 类 抛出一个 Unresolved reference.

疯狂的是,同一个包上的枚举非常好,经典视图库的 AAR 也是如此。所以,这个问题似乎只影响用 @Composable.

注释的函数

调试和发布 AAR 都会出现此问题,因此不应依赖于发布时的最小化。

当然,如果我直接导​​入 gradle 模块而不是使用 AAR,这个问题就不会发生。

我是否需要做一些特殊的事情来生成带有 Composable 的 AAR?

这是库模块build.gradle

与 class SpeedDialState 相比,这些 classes 的范围似乎是包私有的。也许看看其他可组合库,以了解它们是如何做到的:
https://github.com/jetpack-compose/jetpack-compose-awesome#libraries

问题是由 packagingOptions:

    packagingOptions {
        resources {
            exclude '.readme'
            exclude 'LICENSE.txt'
            exclude 'fabric/*.properties'
            // Exclude the Firebase/Fabric/other random properties files
            exclude '/*.properties'
            // Exclude AndroidX version files
            exclude 'META-INF/*.version'
            // Exclude consumer proguard files
            exclude 'META-INF/proguard/*'
            exclude 'META-INF/*.properties'
            exclude 'META-INF/LICENSE.txt'
            exclude 'META-INF/MANIFEST.MF'
            exclude 'META-INF/NOTICE.txt'
            exclude "META-INF/AL2.0"
            exclude "META-INF/LGPL2.1"
            exclude 'META-INF/maven/com.google.guava/guava/pom.properties'
            exclude 'META-INF/maven/com.google.guava/guava/pom.xml'
            exclude 'META-INF/*.kotlin_module'
            // for byte-buddy
            exclude "META-INF/licenses/ASM"
            pickFirst "win32-x86-64/attach_hotspot_windows.dll"
            pickFirst "win32-x86/attach_hotspot_windows.dll"
        }
    }

并且,特别是 exclude 'META-INF/*.kotlin_module':访问 top-level 成员需要此文件。

最好清除这个排除列表,只添加构建项目所需的内容。