Buffer icon Проекты
33 заметки с тегом

android

Позднее Ctrl + ↑

Установка сразу на несколько Android устройств

При тестировании приложений часто приходится переустанавливать приложение, это очевидно. Когда я делал для себя мини CI\CD, то там уведомление с ссылкой на APK или IPA, приходило в телеграм. Это удобно, когда на девайсах уже всё настроено и есть доступ к телеге. Скачал и установил.

Но есть у меня и много девайсов на Android, которые периодически сбрасываются до заводских настроек. Каждый раз устанавливать и настраивать телеграм на каждом — как-то утомительно. Поэтому, я написал небольшой баш-скрипт который устанавливает/удаляет приложение сразу со всех подключенных андроид устройств. Было б нужное количество портов и проводов :)

Console APK install tool

Console APK install tool

Console APK install tool

Если необходимо, то эти функции можно добавить и в прошлый скрипт для CI\CD, если не нужно закачивать APK на сервер и отправлять уведомление.

Исходник на Github

Pocket

Pocket logo

Pocket logo

Pocket logo

Пользуюсь Pocket уже несколько лет. Это просто, это удобно, это стало необходимо. Потому что в текущем потоке информации, успеть прочитать всё нужное и интересное — невозможно. Pocket, как приложение для закладок и чтения — самое то.

Одно время, я что-то интересное скидывал в Избранное в Телеграмм. Но потом всё стал скидывать в Pocket. Если на андроиде или айос, можно поделиться с помощью стандартного механизма и ссылка окажется в Pocket. Если в браузере — тоже. Для мака есть официальное приложение. На любом девайсе можно читать в офлайн режиме. Крутота.

Свой CI/CD для Unity

Mopsicus CI/CD bash script

Mopsicus CI/CD bash script

Mopsicus CI/CD bash script

Написал небольшую статью на Хабр про скрипт который получился в результате автоматизации сборки Unity проектов под Android и iOS. Раньше большинство операций делалось вручную, теперь всё сведено к минимуму.

Один запуск скрипта и:

  • скачиваются последние изменения с GIT
  • запускаются тесты
  • собирается APK для Android, в develop или release
  • собирается для iOS Xcode проект, в develop или release
  • компилируется
  • архивируется и экспортируется в IPA
  • генерируется манифест для него
  • генерируются HTML страницы для установки
  • всё это загружается на сервер с помощью sshpass
  • все логи записываются в отдельную папку
  • отсылается уведомление в Телеграмм, что всё готово

Вот такая интеграция и доставка :)

Исходники на Github

Firebase под контролем

Обновлено: 16.10.2020
С последними версиями FB этот фокус не работает :(
Точнее инициализация работает когда апп активен, но при выключенном приложении пуши не приходят, FirebaseInitProvider не инициализируется. Разбираюсь...

Firebase Android

Firebase Android

Firebase Android

У меня есть плагин для Unity, который отвечает за уведомления, как локальные так и PUSH. Firebase даёт файлик google-services.json, который нужно добавить в Android проект или плагин, и при сборке, уже Gradle плагин прочитает из этого файла, создаст XML и позже Firebase будет инициализироваться автоматически в приложении.

Но, хотелось бы, чтобы плагин был один и его можно было импортировать в другие проекты, не пересобирая его каждый раз с новый JSON файлом. Думал это будет некоторой проблемой и придётся придумывать костыли, но оказалось всё проще.

Можно инициализировать Firebase вручную с нужными параметрами. Т. е. всё что лежит в JSON файле, можно передать в конструктор и оно будет работать. Для этого, надо добавить в манифест:

<provider
    android:name="com.google.firebase.provider.FirebaseInitProvider"
    android:authorities="${applicationId}.firebaseinitprovider"
    tools:node="remove"
    />

Теперь Firebase автоматически не инициализируется. А чтобы сделать это самому, в плагине, при старте Unity приложения будет вызываться функция с конструктором и нужными параметрами уже из конфига игры или приложения:

FirebaseOptions.Builder builder = new FirebaseOptions.Builder()
    .setApplicationId("your_app_id")
    .setApiKey("your_api_key")
    .setDatabaseUrl("your_link_to_db")
    .setStorageBucket("your_storage-url");
FirebaseApp.initializeApp(this, builder.build());

Теперь нет необходимости каждый раз билдить плагин для уведомлений. Ура.

Как извлечь ассеты и C# код из APK

Две небольшие статьи одного автора, про то, как извлечь ассеты из APK файл Unity проекта и как получить C# код от туда же. Конечно он будет не в идеальном виде, но всё же.

Иногда интересно (и полезно) узнать, как устроены некоторые моменты в игре, таким образом можно расковырять его и поискать. Извлекать ассеты (картинки, звуки, модели) и использовать их в своих проектах, конечно не рекомендуется :)

Если хотите хоть как-то усложнить жизнь таким «хакерам» и защитить свой проект, можно использовать обфускаторы кода, такие есть на Github и в Unity Asset Store.

Уведомления в Unity

Юнитеки всё никак не могут сделать нормальный плагин для управления уведомлениями :( Вот и сейчас, вроде что-то новое и вроде даже удобное, но нет возможности принимать push сообщения с сервера. Почему? Это же фича которая используется почти во всех онлайн играх.

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

Исходники примера

 Нет комментариев    632   2019   android   ios   plugin   unity   с#   уроки

UnityMobileInput больше не нужен

Обновлено 16.05.2019
Свершилось. В новой версии Unity 2019.1 допилили поле ввода (InputField) в TextMeshPro.

Раньше эта галочка не работала и поле ввода всё равно появлялось.

Теперь дополнительное поле ввода не появляется на iOS и Android! Мой UnityMobileInput не особо-то и нужен, всё можно сделать «штатными» компонентами и оно будет работать как надо, вроде :) Там же есть и поддержка эмоджи.

UPD

Рано радовался, определять высоту экранной клавиатуры юнитеки так и не научились... Всё равно придётся использовать костыль, хоть и меньшего размера :)

 1 комментарий    793   2019   android   ios   unity   ассеты   проекты

Добавь в свой старый Mac TouchID

Шутка ли? :) Нет. Можно разблокировать свой мак с андроида, по отпечатку!
На мак ставится небольшая утилита, а на андроид приложение. И всё.

Приложение может разблокировать и выводить из спящего режима. Если мак был до этого выключен, то не сработает. Чтобы утилита на маке работала, надо в настройках безопасности разрешить ей доступ.

Проверил. Работает. Удалил.

http://suyashsrijan.com/droidid/

SslStream не работает в Unity с .NET 4.x

Обновлено 29.07.2019

Случайно обнаружил баг с SSL: на Android и iOS (на других не проверял) некорректно срабатывает конструктор SslStream. Появляется ошибка:

Unable to find libc

Актуально для всех последних версий Unity, где есть .NET 4.x. Если переключиться на .NET 3.5 (который deprecated) — всё работает, как должно.

Надеюсь скоро починят :(

UPD

В 2019.3 будет пофиксено! Ура. Также выпустят фикс и для 2019.2, которая вот-вот должна пойти в релиз.


В тему про SSL: этот генератор SSL самоподписных сертификатов, я уже упоминал в заметке про SSL в Unity, недавно автор по моей просьбе немного обновил его — теперь можно генерить сертификаты с дополнительными параметрами, например, subjectAltName и добавлять туда IP адреса :)

 Нет комментариев    528   2019   android   ios   unity   разработка   с#

Обновление UnityMobileInput

Теперь высота клавиатуры считается правильно везде и экран не сдвигается вверх при появлении клавиатуры. Это на Android такая история была.

Зарефакторил много старого кода, убрал не нужное, добавил кастомный инспектор, все настройки поля теперь берутся из Unity UI компонента InputField, клавиатура не пропадает если переключаться между полями и другие мелочи.

Напомню, что в Unity есть один нюанс при работе с пользовательским вводом на андроидах — появляется дополнительное поле ввода над клавиатурой. Оно, в общем-то работает, но с ограничениями (нельзя выделять текст и другие нативные штуки) и занимает место.

Было

Стало

Вроде работает :)
UnityMobileInput

Ранее Ctrl + ↓