[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 можно найти решение и подробное разъяснение, как такая проблема произошла.

Теперь использовать оплату через Google Play стало обязательным

Мы с августа не обновляли наше мобильное приложение Кино1ТВ, но когда в декабре сделали апдейт, то получили от Google предупреждение о том, что использовать альтернативные способы оплаты запрещено (в нашем случае — банковская картой).

Запрет был и ранее, но Google относился очень лояльно к этому правилу, по факту не запрещая использовать другие способы оплаты, но в 2020 году все же сообщил о том, что после сентября 2021 разрешает использовать исключительно Google Play в качестве платежного решения в приложении (а мы этот момент упустили).

Но т.к. оплата через Google Play в приложении у нас также была (наравне с банковской картой), то мы просто скрыли кнопку оплаты картой. Теперь будем наблюдать, насколько это повлияет на конверсию.

[Android] Получение размеров экрана через adb

adb shell wm size
Physical size: 1920×1080

adb shell wm density
Physical density: 320

ADB Idea

ADB Idea – плагин для Android Studio и Intellij, который добавит быстрые команды (пресеты) для работы с adb.

Поддерживаемые команды:

  • ADB Uninstall App
  • ADB Kill App
  • ADB Start App
  • ADB Restart App
  • ADB Clear App Data
  • ADB Clear App Data and Restart
  • ADB Start App With Debugger
  • ADB Restart App With Debugger
  • ADB Grant/Revoke Permissions
  • ADB Enable/Disable Wi-Fi
  • ADB Enable/Disable Mobile Data

Два способа выполнения команды:

  • Через меню Tools -> Android -> ADB Idea
  • Через поиск «ADB» в быстрых действия (macOS: CMD + SHIFT + A, Windows/Linux: CTRL + SHIFT + A)

Загрузка Source Maps в Bugsnag

npx bugsnag-source-maps upload-react-native --api-key --platform android --app-version --app-version-code --source-map release.bundle.map --bundle release.bundle