События касания полностью не реагируют в производственных сборках на Samsung S23 Ultra под управлением Android 15, когда для параметра Специальные возможности увеличения экрана установлено значение 1x. Приложение отображается правильно, но сенсорные взаимодействия не регистрируются. Установка увеличения в 0x или 2x решает проблему.
Среда
Версия Expo SDK: 54.0.12
Платформы: Только Android (iOS не затрагивается)
Затронутые устройства:
-
Samsung S23 Ultra (Android 15 с One UI 7) – ЗАТРУДНЕНО при увеличении = 1x
-
Samsung S22 Ultra – НЕ ЗАТРУДНЕНО (работает при всех уровнях увеличения)
Код: Выделить всё
{
"expo": "^54.0.12",
"react": "19.1.0",
"react-native": "0.81.4",
"react-native-gesture-handler": "~2.28.0",
"expo-router": "~6.0.8",
"@gorhom/bottom-sheet": "^5.2.6"
}
Код: Выделить всё
newArchEnabled: true- Использование GestureHandlerRootView со стилем = {{ flex: 1 }
- Использование expo-router со стековой навигацией
- Сборка APK/AAB с помощью Expo SDK 54 в проекте с использованием expo-router и обработчика React-native-gesture
- Установка на Samsung S23 Ultra под управлением Android 15
- Перейдите в Настройки → Дисплей → Размер и стиль шрифта
- Установите размер шрифта 1x (а не 0x или 2x).
- Откройте приложение.
- Попытайтесь взаимодействовать с любыми сенсорными элементами (кнопками, элементами ввода и т. д.)
Фактическое поведение: События касания полностью игнорируются. Пользовательский интерфейс отображается правильно, но неинтерактивен.
Обходной путь найден
Добавление компонента [View] высотой 1 пиксель перед основным контентом таинственным образом решает проблему:
Код: Выделить всё
{/* This fixes touch events */}
{/* App screens */}
Анализ и гипотеза
На основе наших наблюдений при тестировании качества:
- Зависит от устройства: влияет только на Samsung S23 Ultra (Android 15), но не от S22 Ultra или других устройств.
- Зависит от увеличения: Происходит только в том случае, если увеличение установлено точно в 1x
- Связано с макетом: 1 пиксель Просмотр обходного решения предполагает, что Android неправильно рассчитывает области касания или применяет неправильное смещение при увеличении = 1x.
Дополнительный контекст
- Эта проблема возникла после обновления с Expo SDK 52 → 54
- У Samsung есть документированные проблемы с жестами увеличения, влияющими на чувствительность к прикосновениям в некоторых приложениях.
- Связано с известными проблемами сенсорного управления React Native Android с вложенными представлениями с абсолютным позиционированием (facebook/react-native#27333), но я не думаю, что это так уж актуально на дату открытия этой проблемы.
- Может быть связано с новыми специальными возможностями Android 15 или реализацией Samsung One UI 7.
При необходимости я могу предоставить минимальный репозиторий для воспроизведения. Для решения проблемы требуется:
- Производственная сборка на Samsung S23 Ultra (Android 15 с One UI 7)
- Увеличение экрана установлено на 1x
- Приложение с использованием GestureHandlerRootView + expo-router
- Известна ли это проблема с функцией доступности увеличения в Android 15?
- Должна ли Expo по-другому обрабатывать вычисления смещения увеличения?
- Есть ли подходящее решение, выходящее за рамки 1-пиксельного обходного пути?
- Следует ли об этом сообщать вместо ядра React Native, команды Samsung из Expo?
Подробнее здесь: https://stackoverflow.com/questions/797 ... g-when-scr
Мобильная версия