Неразрешенная ссылкаFirebaseMessagingService в многоплатформенном приложении Kotlin для AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Неразрешенная ссылкаFirebaseMessagingService в многоплатформенном приложении Kotlin для Android

Сообщение Anonymous »

Я работаю над мультиплатформенным приложением Kotlin (KMP) и пытаюсь реализовать Firebase Cloud Messaging (FCM) для push-уведомлений в Android-части моего проекта. Однако у меня возникла проблема со следующим кодом:
package firebase.notification

import com.google.firebase.messaging.FirebaseMessagingService

class AuctionFireBaseMessagingService: FirebaseMessagingService () {

}

Ошибка
Неразрешенная ссылка: FirebaseMessagingService
Я уже сделал следующее:
Добавлен Firebase в мой проект в консоли Firebase.
Размещен файл google-services.json в каталоге приложения.
Добавлены зависимости Firebase в мой build.gradle .kts.
Шаги, которые я пробовал:
Синхронизация проекта с Gradle.
Очистка и пересборка проекта .
Убедился, что присутствует правильный импорт: import com.google.firebase.messaging.FirebaseMessagingService.
Несмотря на это, я все еще получаю неразрешенную ошибку ссылки. Я что-то упустил в конфигурации? Буду признателен за любую помощь!
Вот моя конфигурация build.gradle.kts для модуля Android:

import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.JvmTarget

plugins {
alias(libs.plugins.kotlinMultiplatform)
alias(libs.plugins.androidApplication)
alias(libs.plugins.jetbrainsCompose)
alias(libs.plugins.compose.compiler)
kotlin("plugin.serialization") version "2.0.0"
alias(libs.plugins.google.gms.google.services)

}

kotlin {
androidTarget {
@OptIn(ExperimentalKotlinGradlePluginApi::class)
compilerOptions {
jvmTarget.set(JvmTarget.JVM_11)
}
}

listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64()
).forEach { iosTarget ->
iosTarget.binaries.framework {
baseName = "ComposeApp"
isStatic = true
}
}

sourceSets {

androidMain.dependencies {
implementation(compose.preview)
implementation(libs.androidx.activity.compose)

implementation(libs.koin.android)
implementation(libs.koin.androidx.compose)

implementation(libs.ktor.okhttp)

}
commonMain.dependencies {
implementation(compose.runtime)
implementation(compose.foundation)
implementation(compose.material3)
implementation(compose.ui)
implementation(compose.components.resources)
implementation(compose.components.uiToolingPreview)

api(libs.koin.core)
implementation(libs.koin.compose)
implementation(libs.lifecycle.viewmodel)

// latest compose navigation
implementation(libs.navigation.compose)
implementation(libs.kotlinx.serialization.json)

//resources share
implementation(compose.components.resources)
implementation(libs.ktor.core)
implementation(libs.ktor.logging)
implementation(libs.ktor.serialization)
implementation(libs.ktor.negotiation)
implementation(libs.ktor.sockets)

}

iosMain {
dependencies {
implementation(libs.ktor.darwin.ios)
implementation(libs.ktor.ios)
}

}
}
}

android {
namespace = "com.mobile.auction"
compileSdk = libs.versions.android.compileSdk.get().toInt()

sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
sourceSets["main"].res.srcDirs("src/androidMain/res")
sourceSets["main"].resources.srcDirs("src/commonMain/resources")

defaultConfig {
applicationId = "com.mobile.auction"
minSdk = libs.versions.android.minSdk.get().toInt()
targetSdk = libs.versions.android.targetSdk.get().toInt()
versionCode = 1
versionName = "1.0"
}
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
}
buildTypes {
getByName("release") {
isMinifyEnabled = false
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
buildFeatures {
compose = true
}
dependencies {
debugImplementation(compose.uiTooling)
}
}
dependencies {
implementation(libs.androidx.annotation.jvm)
implementation(libs.androidx.navigation.runtime.ktx)
implementation(libs.protolite.well.known.types)
implementation(libs.firebase.messaging)
implementation(libs.firebase.messaging.ktx)
implementation(platform(libs.firebase.bom))

}
compose.resources {
publicResClass = true
packageOfResClass = "auctionsystem_mobileapp.composeapp.generated.resources"
generateResClass = always
}


Плагины уровня проекта
plugins {
// this is necessary to avoid the plugins to be loaded multiple times
// in each subproject's classloader
alias(libs.plugins.androidApplication) apply false
alias(libs.plugins.androidLibrary) apply false
alias(libs.plugins.jetbrainsCompose) apply false
alias(libs.plugins.compose.compiler) apply false
alias(libs.plugins.kotlinMultiplatform) apply false
alias(libs.plugins.google.gms.google.services) apply false
}
repositories {
mavenCentral()
}


Подробнее здесь: https://stackoverflow.com/questions/790 ... ndroid-app
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»