Сбой приложения для тестирования Google Play - java.lang.NoSuchFieldError: нет поля Ключ типа Lkotlinx/coroutines/CoroutAndroid

Форум для тех, кто программирует под Android
Ответить
Гость
 Сбой приложения для тестирования Google Play - java.lang.NoSuchFieldError: нет поля Ключ типа Lkotlinx/coroutines/Corout

Сообщение Гость »

Приложение стабильно работает на проверенных в студии эмуляторах и реальных устройствах. При загрузке в раздел «Внутреннее тестирование» в Google Play постоянно происходит сбой устройства:
Google Pixel 6
1080x2400
Android 12 (SDK 31)
8192 МБ
arm64-v8a.
Стековая трассировка консоли Google Play

Код: Выделить всё

Exception java.lang.NoSuchFieldError: No field Key of type Lkotlinx/coroutines/CoroutineExceptionHandler$Key; in class Lkotlinx/coroutines/CoroutineExceptionHandler; or its superclasses (declaration of 'kotlinx.coroutines.CoroutineExceptionHandler' appears in /data/app/~~KWhmPpaU6JtpmIAZBH3isw==/androidx.test.tools.crawler-P3SH8J3nls-tHnM5nwslZg==/base.apk)
at ua.at.tsvetkov.weather.ui.outfits.quick.QuickSelectionViewModel.  ( Q u i c k S e l e c t i o n V i e w M o d e l . k t : 2 3 5 ) < b r   / >     a t   u a . a t . t s v e t k o v . w e a t h e r . D a g g e r A p p W e a t h e r _ H i l t C o m p o n e n t s _ S i n g l e t o n C $ V i e w M o d e l C I m p l $ S w i t c h i n g P r o v i d e r . g e t   ( D a g g e r A p p W e a t h e r _ H i l t C o m p o n e n t s _ S i n g l e tonC.java:644)
at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory$2.createViewModel (HiltViewModelFactory.java:133)
at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory$2.create (HiltViewModelFactory.java:104)
at dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.create (HiltViewModelFactory.java:171)
at androidx.lifecycle.ViewModelProvider.get (ViewModelProvider.kt:184)
at androidx.lifecycle.ViewModelProvider.get (ViewModelProvider.kt:150)
at androidx.lifecycle.ViewModelLazy.getValue (ViewModelLazy.kt:53)
at androidx.lifecycle.ViewModelLazy.getValue (ViewModelLazy.kt:35)
at ua.at.tsvetkov.weather.ui.outfits.quick.QuickSelectionFragment.getViewModel (QuickSelectionFragment.kt:55)
at ua.at.tsvetkov.weather.ui.outfits.quick.QuickSelectionFragment.onCreateView (QuickSelectionFragment.kt:62)
at androidx.fragment.app.Fragment.performCreateView (Fragment.java:3114)
at androidx.fragment.app.FragmentStateManager.createView (FragmentStateManager.java:557)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:272)
at androidx.fragment.app.FragmentStore.moveToExpectedState (FragmentStore.java:114)
at androidx.fragment.app.FragmentManager.moveToState (FragmentManager.java:1455)
at androidx.fragment.app.FragmentManager.dispatchStateChange (FragmentManager.java:3034)
at androidx.fragment.app.FragmentManager.dispatchViewCreated (FragmentManager.java:2945)
at androidx.fragment.app.Fragment.performViewCreated (Fragment.java:3148)
at androidx.fragment.app.FragmentStateManager.ensureInflatedView (FragmentStateManager.java:410)
at androidx.fragment.app.FragmentStateManager.moveToExpectedState (FragmentStateManager.java:271)
at androidx.fragment.app.FragmentLayoutInflaterFactory.onCreateView (FragmentLayoutInflaterFactory.java:142)
at androidx.fragment.app.FragmentController.onCreateView (FragmentController.java:136)
at androidx.fragment.app.FragmentActivity.dispatchFragmentsOnCreateView (FragmentActivity.java:247)
at androidx.fragment.app.FragmentActivity.onCreateView (FragmentActivity.java:226)
at android.view.LayoutInflater.tryCreateView (LayoutInflater.java:1073)
at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:1001)
at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:965)
at android.view.LayoutInflater.rInflate (LayoutInflater.java:1127)
at android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:1088)
at android.view.LayoutInflater.parseInclude (LayoutInflater.java:1267)
at android.view.LayoutInflater.rInflate (LayoutInflater.java:1123)
at android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:1088)
at android.view.LayoutInflater.parseInclude (LayoutInflater.java:1267)
at android.view.LayoutInflater.rInflate (LayoutInflater.java:1123)
at android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:1088)
at android.view.LayoutInflater.inflate (LayoutInflater.java:686)
at android.view.LayoutInflater.inflate (LayoutInflater.java:538)
at ua.at.tsvetkov.weather.databinding.ActivityMainBinding.inflate (ActivityMainBinding.java:53)
at ua.at.tsvetkov.weather.databinding.ActivityMainBinding.inflate (ActivityMainBinding.java:47)
at ua.at.tsvetkov.weather.ui.main.MainActivity.onCreate (MainActivity.kt:95)
at android.app.Activity.performCreate (Activity.java:8050)
at android.app.Activity.performCreate (Activity.java:8030)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1329)
at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate (MonitoringInstrumentation.java:2)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:3608)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3792)
at android.app.servertransaction.LaunchActivityItem.execute (LaunchActivityItem.java:103)
at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2210)
at android.os.Handler.dispatchMessage (Handler.java:106)
at android.os.Looper.loopOnce (Looper.java:201)
at android.os.Looper.loop (Looper.java:288)
at android.app.ActivityThread.main (ActivityThread.java:7839)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1003)
Все библиотеки обновлены до новейших.
Я пробовал и пустой файл proguard-rules.pro, и разные варианты. Это последнее:

Код: Выделить всё

# Kotlinx
-keep interface kotlinx.coroutines.CoroutineExceptionHandler { *; }
-keep class kotlinx.coroutines.android.AndroidExceptionPreHandler
-keep class kotlinx.coroutines.android.AndroidDispatcherFactory

-keep class kotlinx.coroutines.** { *; }
-keepclassmembers class kotlinx.coroutines.* {
;
();
;
}
-keep class dagger.hilt.** { *; }
-keepclassmembers class dagger.hilt.* {
;
();
;
}

-dontwarn com.google.errorprone.annotations.**
-keepnames @dagger.hilt.android.lifecycle.HiltViewModel class * extends androidx.lifecycle.ViewModel

-keep class kotlinx.coroutines.internal.MainDispatcherFactory { *; }
-keep class kotlinx.coroutines.android.AndroidExceptionPreHandler { *; }
-keep class kotlinx.coroutines.CoroutineExceptionHandler { *; }
-keep class kotlinx.coroutines.android.AndroidDispatcherFactory { *; }
-keep class kotlin.Result { *;  }
-keepclassmembernames class kotlinx.** {
volatile ;
}
build.gradle.kts

Код: Выделить всё

@file:Suppress("UnstableApiUsage")

import java.io.FileInputStream
import java.io.InputStreamReader
import java.util.Properties

plugins {
id("com.android.application")
id("kotlin-android")
id("kotlin-parcelize")
id("kotlin-kapt")
id("com.google.dagger.hilt.android")
id("com.google.gms.google-services")
id("androidx.navigation.safeargs.kotlin")
id("com.google.devtools.ksp")
id("com.google.firebase.crashlytics")
id("androidx.room") version "2.6.1"
}

val skipCommitsCount = 0 // add to verCode if need to align commits count
val verCode = providers.exec {
commandLine("git", "rev-list", "--count", "HEAD")
}.standardOutput.asText.get().trim().toInt()
val gitSha = providers.exec {
commandLine("git", "rev-parse", "--short", "HEAD")
}.standardOutput.asText.get().trim()

val verMajor = 1
val verMinor = 0
val verPatch = 0
val verName = "${verMajor}.${verMinor}.${verPatch}.${verCode}"

val getWeatherApiKey = {
val properties = Properties()
properties.load(project.rootProject.file("local.properties").reader())
properties.getProperty("weather_api_key", "")
}

fun getLocalProperty(key: String, file: String = "local.properties"):  Any {
val properties = Properties()
val localProperties = File(file)
if (localProperties.isFile) {
InputStreamReader(FileInputStream(localProperties), Charsets.UTF_8).use { reader ->
properties.load(reader)
}
} else error("File from not found")

return properties.getProperty(key)
}

android {
namespace = "ua.at.tsvetkov.weather"
compileSdk = 34

defaultConfig {
applicationId = "ua.at.tsvetkov.weather"
minSdk = 26
targetSdk = 34
versionCode = verCode
versionName = verName
buildConfigField("String", "GIT_SHA", "\"${gitSha}\"")
buildConfigField("String", "WEATHER_API_KEY", "\"${getLocalProperty("weather_api_key")}\"")
buildConfigField("String", "WEATHER_API_HOST", "\"https://api.weatherapi.com/v1/\"")
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
javaCompileOptions {
annotationProcessorOptions {
argument("room.schemaLocation", "$projectDir/schemas")
}
}
kapt {
arguments {
arg("room.schemaLocation", "$projectDir/schemas")
}
}
resourceConfigurations.addAll(listOf("en", "ru", "uk"))
}

buildTypes {
getByName("release") {
isMinifyEnabled = false
isDebuggable = false
isShrinkResources = 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"
}
buildFeatures {
viewBinding = true
dataBinding = true
buildConfig = true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.2.0"
}
packaging {
resources {
pickFirsts += "META-INF/LICENSE"
pickFirsts += "META-INF/INDEX.LIST"
pickFirsts += "META-INF/DEPENDENCIES"
pickFirsts += "META-INF/*.properties"
pickFirsts += "META-INF/AL2.0"
pickFirsts += "META-INF/LGPL2.1"
pickFirsts += "git.properties"
}
}
}

kapt {
correctErrorTypes = true // Allow references to generated code
}

room {
schemaDirectory(path = "$projectDir/schemas")
}

hilt {
enableAggregatingTask = true
}

dependencies {

implementation(fileTree(mapOf("dir" to "libs", "include"  to listOf("*.jar",  & q u o t ; * . a a r & q u o t ; ) ) ) ) < b r   / >         i mplementation(files("libs/tao-core-1.5.0.aar"))
implementation(files("libs/tao-log-2.1.0.aar"))

implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.5.0")
implementation("com.google.firebase:firebase-crashlytics:18.6.2")
implementation("com.google.firebase:firebase-analytics:21.5.1")

val navVersion = "2.7.7"
val liveVersion = "2.7.0"
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.activity:activity-ktx:1.8.2")
implementation("androidx.fragment:fragment-ktx:1.6.2")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
implementation("androidx.lifecycle:lifecycle-livedata-ktx:$liveVersion")
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:$liveVersion")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:$liveVersion")
implementation("androidx.lifecycle:lifecycle-livedata-core-ktx:$liveVersion")
implementation("androidx.navigation:navigation-fragment-ktx:$navVersion")
implementation("androidx.navigation:navigation-ui-ktx:$navVersion")
implementation("androidx.legacy:legacy-support-v4:1.0.0")
implementation("androidx.core:core-splashscreen:1.0.1")
implementation("androidx.annotation:annotation:1.7.1")
implementation("androidx.databinding:databinding-runtime:8.2.2")
implementation("androidx.preference:preference-ktx:1.2.1")
implementation("androidx.cardview:cardview:1.0.0")
implementation("androidx.recyclerview:recyclerview:1.3.2")
implementation("androidx.recyclerview:recyclerview-selection:1.1.0")
implementation("androidx.drawerlayout:drawerlayout:1.2.0")

// Google
implementation("com.google.android.material:material:1.11.0")
implementation("com.google.android.gms:play-services-auth:21.0.0")
implementation("com.google.android.gms:play-services-location:21.1.0")
implementation("com.google.android.play:app-update-ktx:2.1.0")
//    implementation("com.google.android.gms:play-services-ads:22.6.0")

// Firebase
val firebaseVersion = "8.0.2"
implementation(platform("com.google.firebase:firebase-bom:32.7.2"))
implementation("com.google.firebase:firebase-analytics-ktx:21.5.1")
// FirebaseUI for Firebase Realtime Database
implementation("com.firebaseui:firebase-ui-database:$firebaseVersion")
// FirebaseUI for Cloud Fire store
implementation("com.firebaseui:firebase-ui-firestore:$firebaseVersion")
// FirebaseUI for Firebase Auth
implementation("com.firebaseui:firebase-ui-auth:$firebaseVersion")
// FirebaseUI for Cloud Storage
implementation("com.firebaseui:firebase-ui-storage:$firebaseVersion")

//Hilt
val hiltVersion ="1.2.0"
implementation("com.google.dagger:hilt-android:2.50")
kapt("com.google.dagger:hilt-compiler:2.50")
implementation("androidx.hilt:hilt-navigation-fragment:$hiltVersion")
implementation("androidx.hilt:hilt-work:$hiltVersion")
implementation("androidx.hilt:hilt-common:$hiltVersion")
kapt("androidx.hilt:hilt-compiler:$hiltVersion")

implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.8.0")

val workVersion = "2.9.0"
implementation("androidx.work:work-runtime-ktx:$workVersion")
implementation("androidx.work:work-gcm:$workVersion")

//Retrofit
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("com.squareup.retrofit2:converter-gson:2.9.0")

// Room
val roomVersion = "2.6.1"
implementation("androidx.room:room-runtime:$roomVersion")
annotationProcessor("androidx.room:room-compiler:$roomVersion")
// To use Kotlin annotation processing tool (kapt)
ksp("androidx.room:room-compiler:$roomVersion")
// Kotlin Extensions and Coroutines support for Room
implementation("androidx.room:room-ktx:$roomVersion")

// Data
implementation("de.siegmar:fastcsv:2.2.2")
implementation("androidx.datastore:datastore-preferences:1.0.0")

// Glide
implementation("com.github.bumptech.glide:glide:4.16.0")
ksp("com.github.bumptech.glide:compiler:4.16.0")

// Lottie
val lottieVersion = "6.3.0"
implementation("com.airbnb.android:lottie:$lottieVersion")

// Circle ImageView
implementation("com.mikhaellopez:circularimageview:4.3.1")

//ml-kit selfie segmentation
implementation("com.google.mlkit:segmentation-selfie:16.0.0-beta4")
implementation("com.google.android.gms:play-services-mlkit-subject-segmentation:16.0.0-beta1")
implementation("com.google.android.gms:play-services-base:18.3.0")

val cameraxVersion = "1.3.1"
implementation("androidx.camera:camera-core:${cameraxVersion}")
implementation("androidx.camera:camera-camera2:${cameraxVersion}")
implementation("androidx.camera:camera-lifecycle:${cameraxVersion}")
implementation("androidx.camera:camera-video:${cameraxVersion}")
implementation("androidx.camera:camera-view:${cameraxVersion}")
implementation("androidx.camera:camera-extensions:${cameraxVersion}")

// Blur
implementation("jp.wasabeef:glide-transformations:4.3.0")
implementation("jp.wasabeef:blurry:4.0.1")

// LeakCanary
//    debugImplementation ("com.squareup.leakcanary:leakcanary-android:3.0-alpha-1")

// Testing
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
}
Есть предложения как решить эту проблему?
14.03.24 Обновление. Ошибка появилась снова без каких-либо изменений с моей стороны.

Источник: https://stackoverflow.com/questions/780 ... ey-of-type
Ответить

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

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

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

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

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