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 окирпичилась пару лет назад (включаешь — и видим бесконечную загрузку), и пишут, что якобы из-за проблем с каким-то из «тихих» обновлений системных сервисов.

Запуск iOS симулятора через терминал

Для запуска iOS симулятора через командную строку нужно — в терминале вызвать:

xcrun simctl list

Список будет примерно такой:

== Devices ==
-- iOS 13.7 --
iPhone 11 (85376EB7-BBC2-4282-B5F1-0077564E5CD7) (Shutdown)
iPhone 11 Pro (3302EFA1-F35E-438C-A74E-715246DC8455) (Shutdown)

Затем по udid запускаем нужный симулятор:

open -a Simulator --args -CurrentDeviceUDID <udid>

[Android] React Native приложения перестали собираться после 4 ноября

Вчера начал собирать под Android наше мобильное приложение, написанное на React Native, и пошли ошибки — мол в одном из файлов используемой нами библиотеки react-native-reanimated проблема с импортом класса. Потратил несколько часов, откатывая изменения, очищая локальные кеши и пр. — безрезультатно.

Потом удалил папку /.gradle (занимала почти 16 ГБ) и теперь при сборке уже другая ошибка:

* What went wrong:
Execution failed for task ‘:app:mergeReleaseNativeLibs’.
> A failure occurred while executing com.android.build.gradle.internal.tasks.MergeNativeLibsTask$MergeNativeLibsTaskWorkAction
> 2 files found with path ‘lib/arm64-v8a/libfbjni.so’ from inputs:
— [redacted]/.gradle/caches/transforms-3/2952ab139faaa4b08a71276c5fc46221/transformed/jetified-react-native-0.71.0-rc.0-release/jni/arm64-v8a/libfbjni.so
— [redacted]/.gradle/caches/transforms-3/d1c59095249a1169bea435013b70e0a9/transformed/jetified-fbjni-0.3.0/jni/arm64-v8a/libfbjni.so
If you are using jniLibs and CMake IMPORTED targets, see
https://developer.android.com/r/tools/jniLibs-vs-imported-targets

Тут бросается в газа упоминание на еще не вышедшую версию React Native «0.71.0-rc.0». Значит, проблема в том, что при сборке тянется не та версия, которая нужна, что уже влечет за собой лавину других проблем. Идем на https://github.com/facebook/react-native/issues/ и сразу видим ветку обсуждения: https://github.com/facebook/react-native/issues/35204

А тут https://github.com/facebook/react-native/issues/35210 можно найти решение и подробное разъяснение, как такая проблема произошла.