将生成的 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 成员需要此文件。
最好清除这个排除列表,只添加构建项目所需的内容。
我正在将我的 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 成员需要此文件。
最好清除这个排除列表,只添加构建项目所需的内容。