Как использовать транзитивную зависимость в KMM android? ⇐ Android
Как использовать транзитивную зависимость в KMM android?
плагины { котлин("мультиплатформенность") идентификатор("com.android.library") id("com.chromaticnoise.multiplatform-swiftpackage") версия "2.0.3" } @OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) котлин { targetHierarchy.default() андроид { компиляции.все { котлинОпции { jvmTarget = "1,8" } } } Список( iOSX64(), iosArm64(), iosSimulatorArm64() ).для каждого { it.binaries.framework { baseName = "общий" } } мультиплатформенныйSwiftPackage { SwiftToolsVersion("5.3") целевые платформы { iOS { v("13") } } } исходные наборы { val commonMain, получив { зависимости { //поместите сюда свои мультиплатформенные зависимости } } val commonTest, получив { зависимости { реализация(котлин("тест")) } } } } андроид { пространство имен = "com.demo.kmmlibrary" компилироватьSdk = 33 defaultConfig { минСдк = 24 } зависимости { //ДАННЫЕ РОМА СОБАКИ api("com.datadoghq:dd-sdk-android-rum:2.1.0") { isTransitive = истина } //ВЕБ-ПРОСМОТР ДАННЫХ СОБАКИ api("com.datadoghq:dd-sdk-android-webview:2.1.0") { isTransitive = истина } // ЖУРНАЛ ДАННЫХ СОБАКИ api("com.datadoghq:dd-sdk-android-logs:2.1.0") { isTransitive = истина } } } Вот что я хочу, так это то, что когда другой проект использует мою библиотеку KMM, он должен автоматически или каким-то образом получить эти зависимости datadog и использовать их для проекта.
Или что-то вроде моей библиотеки должно быть экспортировано с этими заданными зависимостями, по сути, я не хочу, чтобы эти зависимости добавлялись разработчиками, когда они используют мою библиотеку.
В настоящее время, если кто-то использует мою библиотеку, он получает эту ошибку:
ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: основное Процесс: com.dem.hellapp, PID: 11880. java.lang.NoClassDefFoundError: Не удалось разрешить: Lcom/datadog/android/core/configuration/Configuration$Builder; на com.demo.kmmlibrary.SampleApplication.onCreate(SampleApplication.kt:18) на com.demo.shellapp.ShellApplication.onCreate(ShellApplication.kt:9) в android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1277) в android.app.ActivityThread.handleBindApplication(ActivityThread.java:6759) в android.app.ActivityThread.-$$Nest$mhandleBindApplication (неизвестный источник: 0) в android.app.ActivityThread$H.handleMessage(ActivityThread.java:2133) в android.os.Handler.dispatchMessage(Handler.java:106) в android.os.Looper.loopOnce(Looper.java:201) в android.os.Looper.loop(Looper.java:288) в android.app.ActivityThread.main(ActivityThread.java:7872) в java.lang.reflect.Method.invoke (собственный метод) по адресу com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) Вызвано: java.lang.ClassNotFoundException: не найден класс "com.datadog.android.core.configuration.Configuration$Builder" по пути: DexPathList[[zip file "/data/app/~~P6ino9o4vHcXj82NbHs7kg==/com" .dem.hellapp-9iavDFP1eTMvUtUeB9ZvSg==/base.apk"],nativeLibraryDirectories=[/data/app/~~P6ino9o4vHcXj82NbHs7kg==/com.dem.hellapp-9iavDFP1eTMvUtUeB9ZvSg==/lib/x86_64, /system/lib64, / system_ext /lib64]] в dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259) в java.lang.ClassLoader.loadClass(ClassLoader.java:379) в java.lang.ClassLoader.loadClass(ClassLoader.java:312) на com.demo.kmmlibrary.SampleApplication.onCreate(SampleApplication.kt:18) на com.demo.shellapp.ShellApplication.onCreate(HellApplication.kt:9) в android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1277) в android.app.ActivityThread.handleBindApplication(ActivityThread.java:6759) в android.app.ActivityThread.-$$Nest$mhandleBindApplication (неизвестный источник: 0) в android.app.ActivityThread$H.handleMessage(ActivityThread.java:2133) в android.os.Handler.dispatchMessage(Handler.java:106) в android.os.Looper.loopOnce(Looper.java:201) в android.os.Looper.loop(Looper.java:288) в android.app.ActivityThread.main(ActivityThread.java:7872) в java.lang.reflect.Method.invoke (собственный метод) по адресу com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) по адресу com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
плагины { котлин("мультиплатформенность") идентификатор("com.android.library") id("com.chromaticnoise.multiplatform-swiftpackage") версия "2.0.3" } @OptIn(org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi::class) котлин { targetHierarchy.default() андроид { компиляции.все { котлинОпции { jvmTarget = "1,8" } } } Список( iOSX64(), iosArm64(), iosSimulatorArm64() ).для каждого { it.binaries.framework { baseName = "общий" } } мультиплатформенныйSwiftPackage { SwiftToolsVersion("5.3") целевые платформы { iOS { v("13") } } } исходные наборы { val commonMain, получив { зависимости { //поместите сюда свои мультиплатформенные зависимости } } val commonTest, получив { зависимости { реализация(котлин("тест")) } } } } андроид { пространство имен = "com.demo.kmmlibrary" компилироватьSdk = 33 defaultConfig { минСдк = 24 } зависимости { //ДАННЫЕ РОМА СОБАКИ api("com.datadoghq:dd-sdk-android-rum:2.1.0") { isTransitive = истина } //ВЕБ-ПРОСМОТР ДАННЫХ СОБАКИ api("com.datadoghq:dd-sdk-android-webview:2.1.0") { isTransitive = истина } // ЖУРНАЛ ДАННЫХ СОБАКИ api("com.datadoghq:dd-sdk-android-logs:2.1.0") { isTransitive = истина } } } Вот что я хочу, так это то, что когда другой проект использует мою библиотеку KMM, он должен автоматически или каким-то образом получить эти зависимости datadog и использовать их для проекта.
Или что-то вроде моей библиотеки должно быть экспортировано с этими заданными зависимостями, по сути, я не хочу, чтобы эти зависимости добавлялись разработчиками, когда они используют мою библиотеку.
В настоящее время, если кто-то использует мою библиотеку, он получает эту ошибку:
ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: основное Процесс: com.dem.hellapp, PID: 11880. java.lang.NoClassDefFoundError: Не удалось разрешить: Lcom/datadog/android/core/configuration/Configuration$Builder; на com.demo.kmmlibrary.SampleApplication.onCreate(SampleApplication.kt:18) на com.demo.shellapp.ShellApplication.onCreate(ShellApplication.kt:9) в android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1277) в android.app.ActivityThread.handleBindApplication(ActivityThread.java:6759) в android.app.ActivityThread.-$$Nest$mhandleBindApplication (неизвестный источник: 0) в android.app.ActivityThread$H.handleMessage(ActivityThread.java:2133) в android.os.Handler.dispatchMessage(Handler.java:106) в android.os.Looper.loopOnce(Looper.java:201) в android.os.Looper.loop(Looper.java:288) в android.app.ActivityThread.main(ActivityThread.java:7872) в java.lang.reflect.Method.invoke (собственный метод) по адресу com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) Вызвано: java.lang.ClassNotFoundException: не найден класс "com.datadog.android.core.configuration.Configuration$Builder" по пути: DexPathList[[zip file "/data/app/~~P6ino9o4vHcXj82NbHs7kg==/com" .dem.hellapp-9iavDFP1eTMvUtUeB9ZvSg==/base.apk"],nativeLibraryDirectories=[/data/app/~~P6ino9o4vHcXj82NbHs7kg==/com.dem.hellapp-9iavDFP1eTMvUtUeB9ZvSg==/lib/x86_64, /system/lib64, / system_ext /lib64]] в dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:259) в java.lang.ClassLoader.loadClass(ClassLoader.java:379) в java.lang.ClassLoader.loadClass(ClassLoader.java:312) на com.demo.kmmlibrary.SampleApplication.onCreate(SampleApplication.kt:18) на com.demo.shellapp.ShellApplication.onCreate(HellApplication.kt:9) в android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1277) в android.app.ActivityThread.handleBindApplication(ActivityThread.java:6759) в android.app.ActivityThread.-$$Nest$mhandleBindApplication (неизвестный источник: 0) в android.app.ActivityThread$H.handleMessage(ActivityThread.java:2133) в android.os.Handler.dispatchMessage(Handler.java:106) в android.os.Looper.loopOnce(Looper.java:201) в android.os.Looper.loop(Looper.java:288) в android.app.ActivityThread.main(ActivityThread.java:7872) в java.lang.reflect.Method.invoke (собственный метод) по адресу com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548) по адресу com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как опубликовать модуль KMM, чтобы использовать его в другом проекте KMM в commonMain
Anonymous » » в форуме Android - 0 Ответы
- 54 Просмотры
-
Последнее сообщение Anonymous
-