Ошибка тирамису в Android 13 с Parcelable ⇐ Android
Ошибка тирамису в Android 13 с Parcelable
В Android SDK 33 имеется ошибка, приводящая к сбою приложения только в сборке выпуска при использовании нового getParcelableExtra или, что более вероятно, getParcelableArrayListExtra, поскольку именно здесь я и получаю проблему. .
Вызвано: java.lang.NullPointerException: попытка вызвать виртуальный метод «boolean java.lang.Class.isInterface()» по нулевой ссылке на объект Кажется, что для Fragment есть решение, но нет альтернативы для Activity. Существует также система отслеживания ошибок, но, вероятно, она была удалена.
Ниже приведен код, который я использую.
/** * Расширение для получения Parcelable Intent с поддержкой обратной совместимости. * */ inline fun Activity.getParcelableIntent(key: String): T? { вернуть if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) Intent.getParcelableExtra(ключ, T::class.java) еще { @Suppress("УСТАРЕВАНИЕ") намерение.getParcelableExtra(ключ) } } /** * Расширение для получения намерения Parcelable ArrayList с поддержкой обратной совместимости. * */ встроенное развлечение Activity.getParcelableArrayListIntent(key: String): java.util.ArrayList? { вернуть if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) Intent.getParcelableArrayListExtra(ключ, T::class.java) еще { @Suppress("УСТАРЕВАНИЕ") Intent.getParcelableArrayListExtra(ключ) } } В действии
val linkedNews = getParcelableArrayListIntent(INTENT_NEWS_LIST) Несмотря на то, что в отладочной и выпускной версиях используются как настройки минимизации, так и сжатия, я столкнулся с описанной выше проблемой только в выпускной сборке.
buildTypes { отладка { отлаживаемая правда minifyEnabled true ShrinkResources true multiDexEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' firebaseCrashlytics { // Нет необходимости во время разработки, включение этого также предотвращает работу Gradle в автономном режиме маппингфилеуплоаденаблед ложь } SigningConfig SigningConfigs.debug } выпускать { отлаживаемое ложь minifyEnabled true ShrinkResources true multiDexEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' SigningConfig SigningConfigs.release } } Также пробовал добавить аннотацию @Keep в класс данных домена, но все равно безуспешно.
В Android SDK 33 имеется ошибка, приводящая к сбою приложения только в сборке выпуска при использовании нового getParcelableExtra или, что более вероятно, getParcelableArrayListExtra, поскольку именно здесь я и получаю проблему. .
Вызвано: java.lang.NullPointerException: попытка вызвать виртуальный метод «boolean java.lang.Class.isInterface()» по нулевой ссылке на объект Кажется, что для Fragment есть решение, но нет альтернативы для Activity. Существует также система отслеживания ошибок, но, вероятно, она была удалена.
Ниже приведен код, который я использую.
/** * Расширение для получения Parcelable Intent с поддержкой обратной совместимости. * */ inline fun Activity.getParcelableIntent(key: String): T? { вернуть if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) Intent.getParcelableExtra(ключ, T::class.java) еще { @Suppress("УСТАРЕВАНИЕ") намерение.getParcelableExtra(ключ) } } /** * Расширение для получения намерения Parcelable ArrayList с поддержкой обратной совместимости. * */ встроенное развлечение Activity.getParcelableArrayListIntent(key: String): java.util.ArrayList? { вернуть if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) Intent.getParcelableArrayListExtra(ключ, T::class.java) еще { @Suppress("УСТАРЕВАНИЕ") Intent.getParcelableArrayListExtra(ключ) } } В действии
val linkedNews = getParcelableArrayListIntent(INTENT_NEWS_LIST) Несмотря на то, что в отладочной и выпускной версиях используются как настройки минимизации, так и сжатия, я столкнулся с описанной выше проблемой только в выпускной сборке.
buildTypes { отладка { отлаживаемая правда minifyEnabled true ShrinkResources true multiDexEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' firebaseCrashlytics { // Нет необходимости во время разработки, включение этого также предотвращает работу Gradle в автономном режиме маппингфилеуплоаденаблед ложь } SigningConfig SigningConfigs.debug } выпускать { отлаживаемое ложь minifyEnabled true ShrinkResources true multiDexEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' SigningConfig SigningConfigs.release } } Также пробовал добавить аннотацию @Keep в класс данных домена, но все равно безуспешно.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Есть ли способ обнаружить нажатие кнопки «Домой» для более поздних версий Тирамису?
Anonymous » » в форуме Android - 0 Ответы
- 35 Просмотры
-
Последнее сообщение Anonymous
-