将 Realm Kotlin 添加为 Android 库中的依赖项

问题描述 投票:0回答:1

我正在尝试按照此处概述的步骤将 Realm Kotlin 添加到 Android 库模块 https://www.mongodb.com/docs/realm/sdk/kotlin/install/#add-the-sdk-to-项目。但是我发现只有 Android 选项可用(如 Android 应用程序,而不是 Android 库)。该库将只有模块 build.gradle 文件,而没有项目 build.gradle。

这个想法是简单地让这个库包含 Realm 对象并在多个应用程序中使用它,而不需要这些应用程序声明对领域的任何依赖项,只需我的库。

我尝试创建一个演示应用程序项目,并使用以下 build.gradle 添加模块 Android 库:

//build.gradle.kts (Module :lib)

plugins {
    id("com.android.library")
    id("org.jetbrains.kotlin.android")
    id("io.realm.kotlin") version "1.14.0"
}

android {
    namespace = "com.ba.lib"
    compileSdk = 34

    defaultConfig {
        minSdk = 33

        testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
        consumerProguardFiles("consumer-rules.pro")
    }

    buildTypes {
        release {
            isMinifyEnabled = false
            proguardFiles(
                getDefaultProguardFile("proguard-android-optimize.txt"),
                "proguard-rules.pro"
            )
        }
    }
    compileOptions {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    kotlinOptions {
        jvmTarget = "1.8"
    }
}

dependencies {

    implementation("androidx.core:core-ktx:1.12.0")
    implementation("androidx.appcompat:appcompat:1.6.1")
    implementation("com.google.android.material:material:1.11.0")
    testImplementation("junit:junit:4.13.2")
    androidTestImplementation("androidx.test.ext:junit:1.1.5")
    androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")

    //realm
    implementation("io.realm.kotlin:library-base:1.11.0")
    implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.0")
}

在库文件中创建了一个虚拟领域对象:

class SomeObject : RealmObject {
    @PrimaryKey
    var id: String = ""
    var name: String = ""

}
var realm = Realm.open(RealmConfiguration.create(schema = setOf(
    SomeObject::class,
)))

然后在主应用程序中,当我尝试访问该对象时,它给出了编译错误:

无法访问“io.realm.kotlin.types.RealmObject”,它是“com.ba.lib.SomeObject”的超类型。检查模块类路径是否缺少或冲突的依赖项

如果有人以前处理过这个问题并解决了它,我将不胜感激。谢谢!

android kotlin gradle realm
1个回答
0
投票

原因是您添加的 Realm 依赖项无法从 app 模块传递访问,因此您无法与 Realm 相关实体进行交互。

为此,您可以使用 api 关键字而不是

implementation
将其包含在
mylibrary
模块中:

api("io.realm.kotlin:library-base:1.11.0")
© www.soinside.com 2019 - 2024. All rights reserved.