Android создает анимацию, сбой в выпускных сборках

Приложение вылетает каждый раз, когда я взаимодействую практически с любым элементом управления созданием сообщения. Просто релиз, отладка работает нормально. Ошибка говорит: 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```

То же самое происходит и с материалом 1.6.4.

Gastón Saillén 06.04.2024 00:17
4
1
332
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я создал тестовый проект, все работало нормально. Поэтому я начал пытаться сузить разницу. Я обновляю тестовый проект до той же версии инструментов 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 с помощью альфа-один

Gastón Saillén 06.04.2024 00:26

Другие вопросы по теме