android - 无法将序列化库依赖项编译到我的 AAR 中
问题描述
我正在导入一个我在 iOS 上工作的 kotlin mpp 项目,但在 android 上我得到一个类未找到异常
2020-03-19 17:08:59.905 25271-25387/com.test.testE/AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-2
Process: com.test.test, PID: 25271
java.lang.NoClassDefFoundError: Failed resolution of: Lkotlinx/serialization/internal/GeneratedSerializer;
我的依赖是
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.3.61")
implementation("io.ktor:ktor-client-android:$ktorVersion")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion")
implementation("io.ktor:ktor-client-json-jvm:$ktorVersion")
implementation("io.ktor:ktor-client-serialization-jvm:$ktorVersion")
implementation("io.ktor:ktor-client-android:$ktorVersion")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-runtime:$serializationVersion")
}
它也适用于我在库项目中对 android 的单元测试。但是当我作为 aar 导入时,它找不到类。我没有使用 proguard 任何想法有什么问题?
debugCompileClasspath - Dependencies for compilation
+--- io.ktor:ktor-client-core:1.2.6@jar
+--- io.ktor:ktor-client-serialization-jvm:1.2.6@jar
+--- io.ktor:ktor-client-json-jvm:1.2.6@jar
+--- io.ktor:ktor-http-cio:1.2.6@jar
+--- io.ktor:ktor-http:1.2.6@jar
+--- io.ktor:ktor-client-android:1.2.6@jar
+--- io.ktor:ktor-client-core-jvm:1.2.6@jar
+--- io.ktor:ktor-http-cio-jvm:1.2.6@jar
+--- io.ktor:ktor-network:1.2.6@jar
+--- io.ktor:ktor-http-jvm:1.2.6@jar
+--- io.ktor:ktor-utils-jvm:1.2.6@jar
+--- org.jetbrains.kotlinx:kotlinx-coroutines-io-jvm:0.1.16@jar
+--- io.ktor:ktor-utils:1.2.6@jar
+--- org.jetbrains.kotlinx:kotlinx-coroutines-io:0.1.16@jar
+--- org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.3.3@jar
+--- org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:0.14.0@jar
+--- org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.3@jar
+--- org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.14.0@jar
+--- org.jetbrains.kotlinx:kotlinx-coroutines-jdk8:1.3.2-1.3.60@jar
+--- org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3@jar
+--- org.jetbrains.kotlinx:kotlinx-io-jvm:0.1.16@jar
+--- org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.60@jar
+--- org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.60@jar
+--- org.jetbrains.kotlin:kotlin-stdlib:1.3.61@jar
+--- org.jetbrains.kotlinx:kotlinx-io:0.1.16@jar
+--- org.jetbrains.kotlin:kotlin-stdlib-common:1.3.61@jar
+--- org.jetbrains.kotlinx:atomicfu-common:0.14.1@jar
+--- org.jetbrains.kotlinx:atomicfu:0.14.1@jar
+--- org.jetbrains:annotations:13.0@jar
+--- org.slf4j:slf4j-api:1.7.26@jar
\--- com.typesafe:config:1.3.1@jar
环境
Kotlin version: 1.3.61
Library version: 0.14.0
Kotlin platforms: android,ios
Gradle version: 3.6.0
解决方案
编辑:问题是 AAR 文件从 pom 文件中获取它们的依赖项。导入 AAR 文件时,它没有对正确库的引用。使用 maven-publish 解决了我的问题,而无需复制使用的存储库。
我遇到了同样的问题,我在我的应用程序的 build.gradle 中导入了缺少的依赖项。它解决了这个问题。我的猜测是依赖项没有完全包含在 aar 文件中。所以让我们说这更像是一个黑客而不是一个实际的解决方案。对于其他依赖项,我不得不这样做,我现在正在寻找它的原因。
dependencies {
//other dependencies for build.gradle (app)
implementation "io.ktor:ktor-client-android:$ktor_version"
implementation "io.ktor:ktor-client-serialization-jvm:$ktor_version"
}
更多信息: https ://github.com/ktorio/ktor/issues/1039#issuecomment-517660157
推荐阅读
- sql-server - 如何正确截断 ETL 管道中的临时表?
- angularjs - 如何在 ng-repeat 中访问子范围
- html - 居中的图像,右侧有文字
- javascript - Javascript - 将对象键打印到 HTML
- c++ - 如何将 Affine3d 应用于 Vector3d
- git - 文件前面的“~$”是什么意思?
- google-app-engine - 从裸根域提供文件
- c++ - 如何在 c++ 中确定一条指令(以字节为单位)结束而另一条指令开始的位置?
- python - 如何使用反向二进制表示重新索引 numpy 数组?
- javascript - 完全对CORS感到困惑。什么是预检错误?