Я работаю над мультиплатформенным приложением 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
Неразрешенная ссылкаFirebaseMessagingService в многоплатформенном приложении Kotlin для Android ⇐ Android
Форум для тех, кто программирует под Android
1727781910
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()
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79042929/unresolved-referencefirebasemessagingservice-in-kotlin-multiplatform-android-app[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия