Nexus Player flash firmware

Попытка обновления фирмвари приставки стабильно завершалась с ошибкой:

wiping userdata...
/usr/local/bin/mke2fs failed with status 1
error: Cannot generate image for userdata

Прыжки с бубном и потопывание ногами не помогало. Но решение проблемы оказалось простым – нужно обновить mke2fs до свежей версии:

$ brew cask install android-platform-tools

Gradle, Lint: [MissingTranslation]

Иногда не нужно делать локализацию всех строк. К примеру, зачем переводить идентификаторы сетей или прочие технические данные.

Если нужно полностью подавить сообщение об ошибке, то в build.gradle достаточно добавить такие параметры:

lintOptions
{
   disable 'MissingTranslation'
}

Если нужно подавить сообщение об ошибке только для определенных файлов, то добавляются такие атрибуты в каждый файл:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation">

Android: скриншот с помощью adb

На девайсе под управлением Android сделать скриншот статического (!) изображения можно скопировав информацию из фреймбуфера:

adb pull /dev/graphics/fb0 fb.bgra

Расширение bgra нужно для convert из набора ImageMagick, что бы он мог понять каков порядок ARGB. Я пробовал снимать скриншоты на девайсе от Sony, там порядок был BGRA. Возможно он таков на всех устройствах.

В цикле снимать скриншоты можно так:

while [ 1 ] ; do adb pull /dev/graphics/fb0 fb-`date +"%H-%M-%S"`.bgra ; sleep 1 ; done

Конвертация:

convert -size 480x854 -depth 8 fb-*.bgra screenshot-%05d.png

Android: завершение приложения

Для “завершения” приложения на Android я раньше делал finish() из Activity и exit() из NDK.
Это далеко не лучший, хотя и кардинально чистящий вариант.

После некоторых раздумий решил завершать apploop и дергать из Activity “хоум скрин”:

Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startMain.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(startMain);

Samsung Galaxy Nexus и Android 4.2.x

Samsung Galaxy Nexus Под этой маркой идет много разных смартфонов, которые отличаются id и, соответственно, поставщиком обновления. Больше никаких различий нет. Определить по стране приобретения или по надписям на коробке поставщика обновлений нельзя. Более того, этот id нельзя посмотреть штатными средствами – нужна сторонняя утилита (тысячи их в маркете).

Мне не повезло и достался мне девайс с поставщиком от Samsung (id девайса yakjuxw), который позволил мне обновиться аж до android 4.1.1. Все, на этом Samsung свою задачу посчитал выполненной.
На днях вышло обновление до 4.2.2 и мне ну очень захотелось получить его тоже. Всяческие танцы с бубном, которые якобы позволяют уговорить Samsung прислать мне обновление не прокатывают.
Под руку попалась документация и ссылки на оригинальные образы от Google. Почитал, решился, обновился.

Итак, документация и ссылка на нужный образ – https://developers.google.com/android/nexus/images
Для установки оригинальной прошивки нужно разлочить бутлоадер (как два пальца обос-ть) – https://source.android.com/source/building-devices.html
После этого из того же фастбута заливается оригинальная прошивка (я залил 4.1.2, но можно было и сразу залить 4.2.2) и уже по воздуху ставится обновление.

Предупреждение – после заливки оригинальной прошивки (не по воздуху) все данные в девайсе (в том числе и во внутренней флешке) будут уничтожены.

Все действия делал из-под Linux.

Android video capture

Для снятия скриншотов купил Screencast Video Recorder. Дополнительно к $3.99 USD с меня сняли $1.00 USD. Хз, почему и за что.
Странно работает удаление сделанных видео – файл удаляется, но в списке тут же появляется запись об этом файле. В демо-версии такого глюка не было.
Пишет видео в контейнер mp4, какой кодек используется я еще не смотрел.

p.s. Для работы приложения нужны права root.

Включение usb-отладки на Android

Хотел проверить работоспособность игры на телефоне жены. Игра работала некорректно, понадобилось чтение лога: adb logcat, а выхлоп пустой. В настройках телефона все включено, но выхлопа нет. Сделал так:

$ adb shell
# echo 1 > /sys/kernel/logger/log_main/enable

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

Советы по miui

Начну писать тут советы, касательно прошивки miui

  • Скриншот можно сделать одновременным нажатием menu и volume down.
  • Перенести икону приложения на другой десктоп можно проще – удерживая иконку одним пальцем войти в режим редактирования, а вторым пальцем промотать до нужного десктопа.

Android: установка .apk

Злой гугель решил, что я недостоин установки приложения YouTube. Мол не в той стране родился и не в той стране живу. Но я считаю, что свобода должна быть свободнее. Итак, приступим:

  • Подключаем телефон к компьютеру с помощью usb-кабеля.
  • В телефоне разрешаем usb debugging.
  • Из консоли пишем adb remount – перемонтирует раздел /system в read-write.
  • Устанавливаем заранее скачанный .apk – adb install ~/your_application.apk – эта команда сама выполнит push из локальной FS в FS телефона и установит приложение.

Вот собственно говоря и вся премудрость.

1 2