[React Native] autolinkLibrariesFromCommand exited with error code: 126

Если при сборке React Native проекта под Android возникает ошибка

autolinkLibrariesFromCommand: process npx @react-native-community/cli config exited with error code: 126

то нужно выдать необходимые права на исполнение следующего скрипта:

chmod +x /Users/[RN-PROJECT-PATH]/node_modules/.bin/rnc-cli

Xcode 16.3 и проблема со сборкой RN-проекта

На днях вышла новая версия Xcode под номером 16.3, и как это обычно бывает, что-то да где-то поломалось. Например, при сборке React Native проектов теперь выдается вот такая ошибка:

undefined template 'std::char_traits'

На GitHub уже завели соответствующую багу. Судя по сообщениям, пока советуют лишь откатиться обратно на Xcode 16.2, при чем каждый не упустит желания отписаться в стиле «Downgrading Xcode to 1.62 worked». Ну понятно, что worked, лучше бы написали, как исправить проблему, не откатываясь назад.

Причина, кстати, в следующем: в описании к 16.3 указывается, что:

The base template for std::char_traits has been removed. If you are using std::char_traits with types other than char, wchar_t, char8_t, char16_t, char32_t or a custom character type for which you specialized std::char_traits, your code will stop working. The Standard does not mandate that a base template is provided, and such a base template is bound to be incorrect for some types, which could previously cause unexpected behavior while going undetected.

Получается, что разработчики React Native не удосужились подготовиться и внести правки заранее.

A problem occurred starting process ‘command ‘node’

Писал ранее, что в Android Studio Ladybug 2024 столкнулся с проблемой, когда при сборке одного из проектов возникала ошибка:

> Task :app:createBundleGoogleDebugJsAndAssets FAILED
Execution failed for task ':app:createBundleGoogleDebugJsAndAssets'.
> A problem occurred starting process 'command 'node''

Оказывается, проблема решается следующим образом:

  • В Android Studio открываем Settings -> Build, Executions.. -> Build Tools -> Gradle и в настройках Gradle JDK выбираем jdk-17. Если jdk-17 нет, то нужно предварительно скачать.

Русская раскладка клавиатуры в эмуляторе Android TV

В эмуляторе Android TV нет возможности изменить раскладку клавиатуры на русский — можно добавить второй язык, но при попытке выбрать его в Gboard ничего не происходит, поэтому заполнять поля ввода остается только на дефолтном английском, ну а если все же нужно на другом языке?

Как вариант, можно установить отдельную клавиатуру (я остановился на SwiftKey) — скачиваем apk и ставим через adb в эмулятор, настраиваем и пользуемся нужным языком.

SwiftKey Keyboard в Android TV

Android Studio Ladybug 2024.2.1

Недавно вышла тут новая версия Android Studio под названием «Божья коровка» (версия 2024.2.1). Обновился. Начинаю собирать один из проектов и выходит ошибка:

Execution failed for task ':common:kaptGenerateStubsDebugKotlin'.
> Error while evaluating property 'compilerOptions.jvmTarget' of task ':common:kaptGenerateStubsDebugKotlin'.
> Failed to calculate the value of property 'jvmTarget'.
> Unknown Kotlin JVM target: 21

А дело в том, что Kotlin 1.9 совместим только с Java 17, а Android Studio Ladybug идет уже с Java 21. Тот случай, когда IDE для Android убегает намного вперед, чем текущие актуальные средства разработки.

В другом проекте на React Native также возникла проблема со сборкой, на этапе выполнения задачи «createBundleGoogleDebugJsAndAssets»:

> Task :app:createBundleGoogleDebugJsAndAssets FAILED
Execution failed for task ':app:createBundleGoogleDebugJsAndAssets'.
> A problem occurred starting process 'command 'node''

Откат на предыдущую версию Android Studio (до Koala Feature Drop), естественно, решил все проблемы.

Vehicle Motion Cues

Apple рассказала о новых фишках, которые появятся в этом году (с выходом iOS 18), направленных для помощи людям с ограниченными возможностями — трекинг глаз, распознавание «нетипичной» речи и пр.

Но меня лично заинтересовала функция Vehicle Motion Cues — помощь тем, кого укачивает (например, в машине), так как я этим тоже страдаю.

Из описания Vehicle Motion Cues:

Исследования показывают, что укачивание обычно вызывается сенсорным конфликтом между тем, что человек видит и тем, что он чувствует, что может помешать некоторым пользователям комфортно использовать iPhone или iPad во время езды в движущемся транспортном средстве.

Используя датчики, встроенные в iPhone и iPad, Vehicle Motion Cues распознает, когда пользователь находится в движущемся транспортном средстве, и выводит анимированные точки по краям экрана, меняющие свое направление в противоположную сторону от движения автомобиля, что помогает уменьшить сенсорный конфликт,.

Эту функцию можно настроить на автоматическое отображение на iPhone или включить и выключить в Центре управления.

А вот как это должно будет выглядеть — автомобиль поворачивает вправо, точки начинают по экрану перемещаться влево. Когда машина ускоряется, то точки движутся назад.

Vehicle Motion Cues

[macOS] Xcode — Unable to boot the Simulator

Столкнулся с тем, что при попытке запуска симулятора возникает ошибка «Unable to boot the Simulator».

Решение, которое помогло — удаление кеша:

sudo rm -R ~/Library/Developer/CoreSimulator/Caches

Pixel Repair Mode

Google анонсировала новый Pixel Repair Mode — режим, который призван помочь защитить конфиденциальность и предотвратить доступ ко всем данным, которые находятся на устройстве во время того, как вы его сдали в ремонт (актуально для устройств Pixel).

Так что теперь нет необходимости, например, предварительно делать резервное копирование, удалять и восстанавливать потом данных.

Достаточно включить Pixel Repair Mode (находится в Настройки -> Система -> Режим ремонта), чтобы защитить личные данные перед ремонтом, а затем выключить этот режим, когда устройство будет вам возвращено.

В дополнение теперь можно запустить приложение Pixel Diagnostic App через команду *#*#7287#*#*, чтобы проверить устройство на наличие проблем до и после ремонта. После ремонта вы сможете легко проверить, правильно ли работает ваш телефон.

Альтернативные сборки Android

Есть у меня в наличии смартфон Google Pixel первой версии, который изначально имел установленный Android 7,  и за три года поддержки получил Android 10 в качестве последнего апдейта (дело было в 2019 году).

Если есть желание поэкспериментировать, то можно поискать либо порты более новых версий Android для Google Pixel, либо использовать альтернативные сборки.

Так, можно выделить:

  • Pixel Experience (Android 11) — порт стоковой прошивки Android 11 для Pixel, поэтому все работает без проблем (камера, Night light и пр.).
  • LineageOS 20 (Android 13) — в принципе, самое лучшее, что на данный момент смогло сделать комьюнити, однако могут присутствовать баги, которые, в принципе, быстро правятся в обновлениях.
  • crDroid (Android 13) — кастомная сборка Android, поддержка только с Pixel 2 и выше.
  • GrapheneOS — кастомная сборка Android, нацеленная на конфиденциальность и безопасность, но сейчас поддержка только с Pixel 4 и выше.

Самообновление Android TV Launcher

Есть приставка Xiaomi MiBox 4 с Android TV 9 на борту и до последних версий Android TV уже навряд ли будет обновлена.

Но вот лаунчер удивительным образом на днях самообновился и стал напоминать интерфейс Google TV (хотя визуально обновилась лишь общая часть интерфейса, вот экран настроек, например, нет).

По всей видимости, Google может удаленно обновлять лаунчеры и всякое другое (кто бы сомневался), что порой может приводить к негативным последствиям. Так, например, приставка Nexus Player окирпичилась пару лет назад (включаешь — и видим бесконечную загрузку), и пишут, что якобы из-за проблем с каким-то из «тихих» обновлений системных сервисов.