Приложение вылетает каждый раз, когда я взаимодействую практически с любым элементом управления созданием сообщения. Просто релиз, отладка работает нормально. Ошибка говорит: androidx.compose.ui.R$id отсутствует display_in_inspector_tag
Трассировка стека приведена ниже.
Это определенно какая-то проблема с R8. Я добавлял что-то в конфигурацию proguard и дошел до того, что вы, по крайней мере, видите имена классов и полей, но пока я не могу сохранить это поле.
У меня не было этой проблемы в релизе, выпущенном неделю назад. Я обновил Android Studio до Android-студия Игуана | 2023.2.1 Патч 1
с:
gradleplugin = "8.3.1"
gradleAndroidCommandPlugin = "1.6.2"
Я чувствую, что у меня должно быть какое-то несоответствие версий, но я не могу его найти.
Я попробовал следующее в proguard, но безуспешно:
-keep class androidx.compose.ui.R$id { *; }
-keepclassmembers class androidx.compose.ui.R$id {
<init>(...);
<fields>;
}
-keep class androidx.compose.ui.R$id {
public static <fields>;
}
-keep class androidx.compose.ui.R$id {
static int hide_in_inspector_tag;
}
E java.lang.NoSuchFieldError: No static field hide_in_inspector_tag of type I in class Landroidx/compose/ui/R$id; or its superclasses (declaration of 'androidx.compose.ui.R$id' appears ....ExHFPZftc_jp0b694EN84A==/base.apk)
E at androidx.compose.material.ripple.RippleContainer.<init>(SourceFile:49)
E at androidx.compose.material.ripple.AndroidRippleIndicationInstance.getOrCreateRippleContainer(SourceFile:48)
E at androidx.compose.material.ripple.AndroidRippleIndicationInstance.addRipple(SourceFile:1)
E at androidx.compose.material.ripple.Ripple$rememberUpdatedInstance$1$1.emit(SourceFile:2)
E at androidx.compose.material.ripple.Ripple$rememberUpdatedInstance$1$1.emit(SourceFile:1)
E at z7.F.B(SourceFile:214)
E at z7.F$c.invokeSuspend(SourceFile:13)
E at kotlin.coroutines.jvm.internal.a.resumeWith(SourceFile:12)
E at w7.W.run(SourceFile:129)
E at androidx.compose.ui.platform.AndroidUiDispatcher.performTrampolineDispatch(SourceFile:7)
E at androidx.compose.ui.platform.AndroidUiDispatcher.access$performTrampolineDispatch(SourceFile:1)
E at androidx.compose.ui.platform.AndroidUiDispatcher$dispatchCallback$1.run(SourceFile:3)
E at android.os.Handler.handleCallback(Handler.java:938)
E at android.os.Handler.dispatchMessage(Handler.java:99)
E at android.os.Looper.loopOnce(Looper.java:201)
E at android.os.Looper.loop(Looper.java:288)
E at android.app.ActivityThread.main(ActivityThread.java:7839)
E at java.lang.reflect.Method.invoke(Native Method)
E at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
E Suppressed: kotlinx.coroutines.internal.DiagnosticCoroutineContextException: [androidx.compose.ui.platform.MotionDurationScaleImpl@9784809, androidx.compose.runtime.h@e1f9a0e, N0{Cancelling}@9390c2f, Androi```
Я создал тестовый проект, все работало нормально. Поэтому я начал пытаться сузить разницу. Я обновляю тестовый проект до той же версии инструментов Compose BOM, Kotlin и сборки. То же самое, до сих пор работает нормально. Поместите в мой проект те же зависимости компоновки, которые использовались в тесте. Мой до сих пор вылетает. Тест все еще работает. Мое приложение использует библиотеку Compose Glide, уберите ее. Ничего не меняется. Я просто добавляю представление, используя:
androidx-adaptive = { module = "androidx.compose.material3.adaptive:adaptive", version.ref = "adaptive" }
androidx-adaptive-layout = { module = "androidx.compose.material3.adaptive:adaptive-layout", version.ref = "adaptive" }
androidx-adaptive-navigation = { module = "androidx.compose.material3.adaptive:adaptive-navigation", version.ref = "adaptive" }
Это адаптивное представление для работы с экранами с подробностями списка на узких и широких экранах.
Поэтому вставьте эти зависимости в тестовый проект. Бум! Тестовый проект вылетает (он даже не использует, просто включает). Так что, думаю, я вырываю представление и трачу несколько дней на написание. И я думаю, мне следует сообщить об ошибке. Адаптивная штука - это альфа, так что...
Я могу добавить первую зависимость, при добавлении второй зависимости начинаются сбои.
У меня такая же проблема. Я обнаружил, что обновляется версия следующей зависимости:
androidx.compose.material:material-ripple:1.6.4
с версией 1.7.0-alpha05 решена проблема:
androidx.compose.material:material-ripple:1.7.0-alpha05
Возможно, вам придется добавить зависимость, чтобы она была в альфа-версии, если она поставляется в комплекте с другой используемой вами материальной зависимостью.
Подтверждаю, добавление пульсации материала в альфа05 решает проблему, кстати, у меня также есть материал: материал: 1.6.4, а затем материал-рябь: 1.7.0-альфа05, и он работает правильно, похоже, он переопределяет текущую пульсацию 1.6.4 с помощью альфа-один
То же самое происходит и с материалом 1.6.4.