Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
«Дурак подкидной и переводной» — классика карточных игр! Яркий геймплей, простые правила. Развивайте стратегию, бросайте вызов соперникам и станьте королем карт! Играйте прямо сейчас!

Дурак подкидной и переводной

Карточные, Настольные, Логическая

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Android + Разработка

С этим тегом используют

Игры Смартфон Приложение iOS Телефон Google Play iPhone Gamedev Инди игра Инди Программирование Unity IT Все
374 поста сначала свежее
3
AppFox
AppFox
1 год назад

Оптимизация баз данных с использованием Room Persistence Library⁠⁠

В мире разработки современных приложений базы данных играют важную роль в хранении и управлении данными. При разработке приложений для Android использование библиотеки Room Persistence Library становится неотъемлемой частью работы с базами данных. В этой статье мы рассмотрим методы оптимизации баз данных с помощью Room, чтобы ваши приложения работали быстро и эффективно.

Оптимизация баз данных с использованием Room Persistence Library Инновации, IT, Разработка, Программирование, Программист, Длиннопост, Android

Основы библиотеки постоянства Room

Room - это библиотека баз данных для Android, предоставляет высокоуровневый доступ к SQLite. Она упрощает создание и управление базами данных и предоставляет мощные инструменты для выполнения запросов.

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

Кроме того, для оптимизации структуры таблиц и индексов необходимо правильно использовать аннотации Room, такие как @entity, @PrimaryKey и @ForeignKey.

Использование индексов

Индексы являются мощным инструментом для оптимизации производительности базы данных. Room позволяет создавать индексы с помощью аннотации @index. Индексы ускоряют выполнение запросов к таблице, особенно если таблица содержит большой объем данных.

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

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

Использование асинхронных операций

Room позволяет выполнять операции с базой данных асинхронно, используя классы AsyncTask или Coroutine. Это позволяет избежать блокировки основного потока и повысить скорость отклика приложения.

Для оптимизации производительности асинхронные операции следует использовать для запросов, выполнение которых может занять длительное время, например, для запросов к удаленным базам данных или обновления больших объемов данных.

Кроме того, в Room предусмотрена возможность использования транзакций для выполнения нескольких операций в одной транзакции, что может существенно повысить производительность при работе с данными.

Ленивая загрузка

Ленивая загрузка - это техника оптимизации, при которой данные из базы данных загружаются только тогда, когда они действительно необходимы.

В Room ленивая загрузка реализуется с помощью аннотации @Relation, которая позволяет определять связи между сущностями и загружать данные по мере необходимости.

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

Использование кэширования

Для повышения производительности приложения можно использовать кэширование данных. Кэширование позволяет хранить результаты запросов в кэше и обновлять их по мере необходимости.

Для снижения нагрузки на сеть и ускорения загрузки данных можно использовать библиотеки кэширования, такие как Glide или Picasso, для кэширования изображений и других мультимедийных файлов.

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

Мониторинг и профилирование

Для оптимизации работы баз данных необходимо постоянно контролировать и анализировать их производительность. Room предоставляет инструменты для профилирования запросов и анализа производительности во время выполнения.

Вы можете использовать Android Profiler и SQLite Query Analyzer для выявления "узких мест" в работе базы данных и оптимизации запросов.

Регулярный мониторинг и профилирование помогут выявить проблемы и повысить производительность приложений.

Резервное копирование и восстановление

Важным аспектом оптимизации базы данных является обеспечение ее безопасности. Room предоставляет средства для резервного копирования и восстановления данных в случае сбоя или потери.

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

Также важно защищать данные с помощью шифрования для предотвращения несанкционированного доступа к базе данных.

Показать полностью 1
[моё] Инновации IT Разработка Программирование Программист Длиннопост Android
0
569
monobogdan
monobogdan
1 год назад
TECHNO BROTHER

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб?⁠⁠

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



Многие программисты так или иначе имеют тягу и интерес к разработке игр. Немалое количество спецов было замечено за написанием маленьких и миленьких игрушек, которые были разработаны за короткое время «just for fun». Большинству разработчиков за счастье взять готовый игровой движок по типу Unity/UE и попытаться создать что-то своё с их помощью, особенно упорные изучают и пытаются что-то сделать в экзотических движках типа Godot/Urho, а совсем прожжённые ребята любят писать игрушки… с нуля. Таковым любителем писать все сам оказался и я. И в один день мне просто захотелось написать что-нибудь прикольное, мобильное и обязательно — двадэшное! В этой статье вы узнаете про: написание производительного 2D-рендерера с нуля на базе OpenGL ES, обработку «сырого» ввода в мобильных играх, организацию архитектуры и игровой логики и адаптация игры под любые устройства. Интересно? Тогда жду вас в статье!

❯ Как это работает?



Конечно же разработка собственных игр с нуля — это довольно веселое и увлекательное занятие само по себе. Ведь удовольствие получает не только пользователь, который играет в уже готовую игру, но и её разработчик в процессе реализации своего проекта. В геймдеве есть множество различных и интересных задач, в том числе — и для программиста.

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост


Один из прошлых проектов — 3D шутэмап под… коммуникаторы с Windows Mobile без видеоускорителей! Игра отлично работала и на HTC Gene, и на QTek S110!

В больших студиях принято всю нагрузку распределять на целые команды разработчиков. Артовики занимаются графикой, звуковики — музыкой и звуковыми эффектами, геймдизайнеры — продумывают мир и геймплей будущей игры, а программисты — воплощают всё это в жизнь. Однако, за последние 20 лет появилось довольно большое количествобесплатныхинструментов, благодаря которым маленькие команды или даже разработчики-одиночки могут разрабатывать собственные игры сами!

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



Подобные инструменты включают в себя как довольно функциональныеконструкторы игр, которые обычно не требуют серьёзных навыков программирования и позволяют собирать игру из логических блоков, так и полноценных игровых движков на манер Unity или Unreal Engine, которые позволяют разработчикам писать игры и продумывать их архитектуру самим. Можно сказать что именно «благодаря» доступности подобных инструментов мы можем видеть текущую ситуацию на рынке мобильных игр, где балом правят очень простые и маленькие донатные игрушки, называемыегиперкежуалом.

Но у подобных инструментов есть несколько минусов, которые банально не позволяют их использовать в реализации некоторых проектов:

  • Большой вес приложения: При сборке, Unity и UE создают достаточно объёмные пакеты из-за большого количества зависимостей. Таким образом, даже пустой проект может спокойно весить 50-100 мегабайт.

  • Неоптимальная производительность: И у Unity, и у UE очень комплексные и сложные рендереры «под капотом». Если сейчас купить дешевый смартфон за 3-4 тысячи рублей и попытаться на него накатить какой-нибудь 3 в ряд, то нас ждут либо вылеты, либо дикие тормоза.



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

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

❯ Определяемся с задачами



Перед тем, как садится и пилить игрушку, нужно сразу же определится с целями и поставить перед собой задачи — какой стек технологий мы будет использовать, как будем организовать игровую логику, на каких устройствах игра должна работать и.т.п. Я прикинул и решил реализовать что-то совсем несложное, но при этом достаточно динамичное и забавное… 2D-шутер с видом сверху!

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



Игра будет написана полностью на Java — родном языке для Android-приложений. Пустые пакеты без зависимостей весят всего около 20 килобайт — что только нам на руку! Ни AppCompat, ни какие либо ещё библиотеки мы использовать не будем — нам нужен минимальный размер из возможных!

Итак, что должно быть в нашей игре:

  • Основная суть: Вид сверху, человечком по центру экрана можно управлять и стрелять во вражин. Цель заключается в том, чтобы набрать как можно больше очков перед тем, как игрока загрызут. За каждого поверженного врага начисляются баксы, за которые можно купить новые пушки!

  • Оружие: Несколько видов вооружения, в том числе пистолеты, дробовики, автоматы и даже пулеметы! Всё оружие можно купить в внутриигровом магазине за валюту, которую игрок заработал во время игры

  • Враги: Два типа врагов — обычный зомби и «шустрик». Враги спавнятся в заранее предусмотренных точках и начинают идти (или бежать) в сторону игрока с целью побить его.

  • Уровни: Можно сказать, простые декорации — на момент написания статьи без какого либо интерактива.



Поскольку игра пишется с нуля, необходимо сразу продумать необходимые для реализации модули:

  • Графика: Аппаратно-ускоренный рендерер полупрозрачных 2D-спрайтов с возможность аффинных трансформаций (поворот/масштаб/искривление и.т.п). На мобильных устройствах нужно поддерживать число DIP'ов (вызовов отрисовки) как можно ниже — для этого используется техника батчинга. Сам рендерер работает на базе OpenGLES 1.1 — т.е чистый FFP.

  • Ввод: Обработка тачскрина и геймпадов. Оба способа ввода очень легко реализовать на Android — для тачскрина нам достаточно повесить onTouchListener на окно нашей игры, а для обработки кнопок — ловить события onKeyListener и сопоставлять коды кнопок с кнопками нашего виртуального геймпада.

  • Звук: Воспроизведение как «маленьких» звуков, которые можно загрузить целиком в память (выстрелы, звуки шагов и… т.п), так и музыки/эмбиента, которые нужно стримить из физического носителя. Тут практически всю работу делает за нас сам Android, для звуков есть класс — SoundPool (который, тем не менее, не умеет сообщать о статусе проигрывания звука), для музыки — MediaPlayer. Есть возможность проигрывать PCM-сэмплы напрямую, чем я и воспользовался изначально, но с ним есть проблемы.

  • «Физика»: Я не зря взял этот пункт в кавычки :) По сути, вся физика у нас — это один метод для определения AABB (пересечения прямоугольник с прямоугольником). Всё, ни о какой настоящей физике и речи не идет :)



Поэтому, с учетом требований описанных выше, наша игра будет работать практически на любых смартфонах/планшетах/тв-приставках кроме китайских смартфонов на базе чипсета MT6516 без GPU из 2010-2011 годов. На всех остальных устройствах, включая самый первый Android-смартфон, игра должна работать без проблем. А вот и парк устройств, на которых мы будем тестировать нашу игру:

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



С целями определились, самое время переходить к практической реализации игры! По сути, её разработка заняла у меня около дву-трех дней — это с учетом написания фреймворка. Но и сама игра совсем несложная :)

❯ Рендерер



Начинаем, мы конечно же, с инициализации контекста GLES и продумывания архитектуры нашего будущего фреймворка. Я всегда ставил рендерер на первое место, поскольку реализация остальных модулей не особо сложная и их можно дописать прямо в процессе разработки игры.

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

По сути, в современном мире, 2D — это частный случай 3D, когда рисуются всё те же примитивы в виде треугольников, но вместо перспективной матрицы, используется ортографическая матрица определенных размеров. Во времена актуальности DirectDraw (середина-конец 90х) и Java-телефонов, графику обычно не делали адаптивной, из-за чего при смене разрешения, игровое поле могло растягиваться на всю площадь дисплея. Сейчас же, когда разброс разрешений стал колоссальным, чаще всего можно встретить два подхода к организацию проекции:

  • Установка ортографической матрицы в фиксированные размеры: Если координатная система уже была завязана на пиксели, или по какой-то причине хочется использовать именно её, то можно просто завязать игру на определенном разрешении (например, 480x320, или 480x800). Растеризатор формально не оперирует с пикселями — у него есть нормализованные координаты -1..1 (где -1 — начало экрана, 0 — середина, 1 — конец, это называется clip-space), а матрица проекции как раз и переводит координаты геометрии в camera-space координатах в clip-space — т.е в нашем случае, автоматически подгоняет размеры спрайтов из желаемого нами размера в физический. Обратите внимание, физические движки обычно рассчитаны на работу в метрических координатных системах. Попытки задавать ускорения в пикселях вызывают рывки и баги.

  • Перевод координатной системы с пиксельной на метрическую/абстрактную:
    Сейчас этот способ используется чаще всего, поскольку именно его используют самые популярные движки и фреймворки. Если говорить совсем просто — то мы задаем координаты объектов и их размеры не относительно пикселей, а относительно размеров этих объектов в метрах, или ещё какой-либо абстрактной системы координат. Этот подход близок к обычной 3D-графике и имеет свои плюшки: например, можно выпустить HD-пак для вашей игры и заменить все спрайты на варианты с более высоким разрешением, не переделывая половину игры.



Для совсем простых игр я выбираю обычно первый подход. Самое время реализовать главный метод всего рендерера — рисование спрайтов. В моём случае, спрайты не были упакованы в атласы (одна текстура, содержащая в себе целую анимацию или ещё что-то в этом духе), поэтому и возможность выборки тайла из текстуры я реализовывать не стал. В остальном, всё стандартно:

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост
Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

Всё более чем понятно — преобразуем координаты спрайта из world-space в camera-space, отсекаем спрайт, если он находится за пределами экрана, задаем стейты для GAPI (на данный момент, их всего два), заполняем вершинный буфер геометрией и рисуем на экран. Никакого смысла использовать VBO здесь нет, а на nio-буфферы можно получить прямой указатель без лишних копирований, так что никаких проблем с производительностью не будет. Обратите внимание — вершинный буфер выделяется заранее — аллокации каждый дравколл нам не нужны и вредны.

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

Обратите внимание на вызовы ByteBuffer.order — это важно, по умолчанию, Java создаёт все буферы в BIG_ENDIAN, в то время как большинство Android-устройств — LITTLE_ENDIAN, из-за этого можно запросто накосячить и долго думать «а почему у меня буферы заполнены правильно, но геометрии на экране нет!?».

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



В процессе разработки игры, при отрисовке относительно небольшой карты с большим количеством тайлов, количество вызовов отрисовки возросло аж до 600, из-за чего FPS в игре очень сильно просел. Связано это с тем, что на старых мобильных GPU каждый вызов отрисовки означал пересылку состояния сцены видеочипу, из-за чего мы получали лаги. Фиксится это довольно просто: реализацией батчинга — специальной техники, которая «сшивает» большое количество спрайтов с одной текстурой в один и позволяет отрисовать хоть 1000, хоть 100000 спрайтов в один проход! Есть два вида батчинга, статический — когда объекты «сшиваются» при загрузке карты/в процессе компиляции игры (привет Unity) и динамический — когда объекты сшиваются прямо на лету (тоже привет Unity). На более современных мобильных GPU с поддержкой GLES 3.0 есть также инстансинг — схожая технология, но реализуемая прямо на GPU. Суть её в том, что мы передаём в шейдер параметры объектов, которые мы хотим отрисовать (матрицу, настройки материала и.т.п) и просим видеочип отрисовать одну и ту же геометрию, допустим, 15 раз. Каждая итерация отрисовки геометрии будет увеличивать счетчик gl_InstanceID на один, благодаря чему мы сможем расставить все модельки на свои места! Но тут уж справедливости ради стоит сказать, что в D3D10+ можно вообще стейты передавать на видеокарту «пачками», что здорово снижает оверхед одного вызова отрисовки.

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



Для загрузки спрайтов используется встроенный в Android декодер изображений. Он умеет работать в нескольких режимах (ARGB/RGB565 и.т.п), декодировать кучу форматов — в том числе и jpeg, что положительно скажется на финальном размере игры.

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

На этом реализация рендерера закончена. Да, все вот так просто :)
Переходим к двум остальным модулям — звук и ввод.

❯ Звук и ввод



Как я уже говорил, звук я решитл реализовать на базе уже существующей звуковой подсистемы Android. Ничего сложного в её реализацир нет, можно сказать, нам остаётся лишь написать обёртку, необходимую для работы. Изначально я написал собственный загрузчик wav-файлов и хотел использовать AudioTrack — класс для воспрозизведения PCM-звука напрямую, но мне не понравилось, что в нём нет разделения на источники звука и буферы, из-за чего каждый источник вынужден заниматься копированием PCM-потока в новый и новый буфер…

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



Полная реализация звукового потока выглядит так. И да, с SoundPool нет возможности получить позицию проигрывания звука или узнать, когда проигрывание закончилось. Увы.

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

Да будет звук! Ну и про ввод не забываем (листинг получился слишком длинный, а на Пикабу нет тега для кода - так что как-то так):

public static final int TOUCH_IDLE = 0; public static final int TOUCH_PRESS - Pastebin.com

Сама реализация джойстика крайне простая — запоминаем координаты, куда пользователь поставил палец и затем считаем дистанцию положения пальца относительно центральной точки, параллельно нормализововая их относительно максимальной дистанции:

public class Joystick { private Sprite joySprite; public float Veloc - Pastebin.com

Кроме того, я добавил вспомогательный метод для вызова диалога ввода текста — это для таблицы рекордов и прочих фишек, которые требуют ввода текста пользователем. Ну не будем же мы сами клавиатуру костылить!

Основа для игры есть, теперь переходим к её реализации!

❯ Пишем игру

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



Писать игру я начал с создания первого уровня и реализации загрузчика уровней. В качестве редактора, я выбрал популярный и широко-известный TileEd — удобный редактор с возможностью экспорта карт в несколько разных форматов. Я лично выбрал Json, поскольку в Android уже есть удобный пакет для работы с этим форматом данных.

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

Карта делится на 3 базовые понятия: тайлы — фон, с изображением травы/асфальта/земли и.т.п, пропы — статичные объекты по типу деревьев и кустов и сущности — объекты, участвующие в игровом процессе, т.е игрок, зомби и летящие пули. Система сущностей реализована в виде абстрактного базового класса, который реализовывает логику апдейтов, просчитывает Forward-вектор и выполняет другие необходимые задачи:

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

После этого, я приступил к реализации игрока, оружия и механики стрельбы. В целом, практически всю логику игрока можно описать в виде одного метода update: обрабатываем ввод и ходьбу с джойстика, поворачиваем игрока в сторону пальца на экране и пока зажата какая-либо область на экране мы ходим и стреляем:

@Override public void update() { super.update(); joyInp - Pastebin.com

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост



Ну и не забываем про реализацию зомби. Она тоже очень простая: есть базовый класс Zombie, от которого наследуются все монстры и который реализует несколько необходимых методов — повернуться в сторону игрока, идти вперед и конечно же атака!

Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост
Сам написал, сам поиграл: Как я написал 2D-игру для Android полностью с нуля, весом менее 1мб? Gamedev, Инди, Инди игра, Unity, 2D, Android, Разработка, Программирование, Графика, Девайс, Гаджеты, Opengl, Gles, Видео, Без звука, Длиннопост

❯ Что у нас есть на данный момент?



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


Как мы видим, игра (а пока что — proof of concept) работает довольно неплохо на всех устройствах, которые были выбраны для тестирования. Однако это ещё не всё — предстоит добавить конечную цель игры (набор очков), магазин стволов и разные типы мобов. Благо, это всё реализовать уже совсем несложно :)

❯ Заключение



Написать небольшую игрушку с нуля в одиночку вполне реально. Разработка достаточно больших проектов конечно же требует довольно больших человекочасов, однако реализовать что-то своё, маленькое может и самому!

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

Статья подготовлена при поддержке компании TimeWeb Cloud. Подписывайтесь на меня и @Timeweb.Cloud, чтобы не пропускать новые статьи каждую неделю!
Но тут я даже чутка навру - на этой неделе вас ждёт сразу две статьи :) Следующая - в четверг, прошлую неделю я отдыхал и работал.

Показать полностью 19 3
[моё] Gamedev Инди Инди игра Unity 2D Android Разработка Программирование Графика Девайс Гаджеты Opengl Gles Видео Без звука Длиннопост
88
9
user5806639
1 год назад

Моя первая игра <3 Сцена Обучения <3⁠⁠

[моё] Unity Инди игра Gamedev Инди Не Steam Разработка RPG Android Тест Мобильные игры Видео YouTube
0
21
KonungzRage
KonungzRage
1 год назад
Лига Геймеров

Мультиплеерная игра Make World, обновление 1.3 "Население"⁠⁠

Мультиплеерная игра Make World, обновление 1.3 "Население" Видеоигра, Инди игра, Gamedev, Разработка, Инди, Стратегия, Онлайн-игры, Мультиплеер, Android, Игры на Android, Браузерные игры, Игры, Компьютерные игры, Длиннопост, Видео, YouTube

Мысли в моей голове когда я начинал пилить игру

Всем привет, пришло время для очередного обновления мультиплеерной игры-стратегии Make World, под названием "Население". Что же нового в новом обновлении? А куча всего, в том числе потраченных сил и нервов! (разрабатываю игру я один, и клиентскую и серверную части). А также:

  1. Полностью переработанное и улучшенное меню

  2. Возможность настраивать время хода при создании миссий

  3. Новая механика: "Население". Теперь, если у вас в городах довольно мало людей, то большой производительности не ждите!

  4. Обновленные миссии и баланс! Теперь на ранних стадиях игры необходимо манипулировать меньшим количеством ресурсов, но продвинутые игроки всё ещё смогут выстраивать хитрые стратегии.

Мультиплеерная игра Make World, обновление 1.3 "Население" Видеоигра, Инди игра, Gamedev, Разработка, Инди, Стратегия, Онлайн-игры, Мультиплеер, Android, Игры на Android, Браузерные игры, Игры, Компьютерные игры, Длиннопост, Видео, YouTube

Просто небольшая обложка к обновлению

Как всегда напоминаю что игра доступна на Windows, устройствах с Android и конечно же web-браузере (но там производительность может хромать из за особенностей веба). Буду рад если вы поддержите меня плюсом, а так же подпиской на одну из соц сетей (любые вопросы по разработке приложений, игр и прочего вы можете задать там, на ютубе так же провожу стримы!):

Discord канал: https://discord.gg/gAgTQNZPVh
YouTube канал: https://www.youtube.com/@konungzrage_ru/videos
Telegram канал: https://t.me/+RPOZdEcSz58xZmVi

А все ссылки на скачивание игры и Play Market тут:
https://plugfox.dev/make-world-ru/

Мультиплеерная игра Make World, обновление 1.3 "Население" Видеоигра, Инди игра, Gamedev, Разработка, Инди, Стратегия, Онлайн-игры, Мультиплеер, Android, Игры на Android, Браузерные игры, Игры, Компьютерные игры, Длиннопост, Видео, YouTube

Пример игрового поля

Пример геймплея в старом обновлении

Показать полностью 3 1
[моё] Видеоигра Инди игра Gamedev Разработка Инди Стратегия Онлайн-игры Мультиплеер Android Игры на Android Браузерные игры Игры Компьютерные игры Длиннопост Видео YouTube
3
520
Vadim1700
Vadim1700
1 год назад
Информационная безопасность IT

Пишем приложение на Mi Band 7 с сервисной частью⁠⁠

Недавно я купил себе Mi band 7, по началу хотел купить 6-ую версию, пока не узнал, что на 7-ой обновилась операционная система и теперь она поддерживает установку приложений. Да, официально они об этом не заявили, но умельцы уже сделали множество приложений. Они ставят их как циферблаты, и это вполне обычные приложения. Но все эти приложения работают только локально на самом MiBand 7, не имея возможности взаимодействовать ни с телефоном, ни с интернетом. Я углубился в байткод приложения и документацию по Zepp OS чтобы найти способ создавать приложения, взаимодействующие с интернетом, в этой статье я опишу свой путь. В итоге у меня получилось сделать запрос в интернет с часов и даже запустить мост для отладки приложений.

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Сразу скажу, что я уже публиковал эту статью на Хабр. Но хочу теперь попробовать начать писать статьи на Пикабу, так что я буду очень рад любым комментариям и отзывам. Надеюсь пользователям Пикабу эта статья тоже зайдет)

Эта статья написана чисто в ознакомительных целях. Я не призываю никого к переработке кода для добавления новых функций с целью использования и распространения переделанного ПО.

Почему приложения официально не поддерживаются?

Мне интересен этот вопрос, но к сожалению я не знаю причин. Похоже что Xiaomi Band 7 сделала для xiaomi компания zepp. И им было проще не поддерживать другую операционную систему, а использовать уже имеющиеся наработки для часов zepp. Поэтому на этих часах стоит система ZeppOS. Вероятно Xiaomi решила не платить за все фишки системы и поэтому функционал часов программно ограничен.

Начало

Для начала, чтобы разобраться как работает система, я попробовал поставить пару приложений от MelianMiko. Ставил самым простым способом, через приложение для установки циферблатов, подробности можете почитать на 4PDA. Я немного поразбирался в структуре приложений и вот что я понял: приложение это bin файл, который является простым zip архивом с, как минимум, несколькими файлами: app.json(Manifest), app.js(Код инициализации и деинициализации приложения при запуске), index.js(Код страницы),icon.png. Далее я пошел на сайт официальной документации по ZeppOS, там описано как включать режим отладки через приложение ZeppApp. Но попробовав подключить часы через это приложения я получил ошибку:

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Я решил на этом не останавливаться, скачал это приложение версии 7.0.1, декомпилировал через apktool в байткод и через jadx в java код:

apktool d com.huami.watch.hmwatchmanager_7.0.1-play_100802.apk jadx com.huami.watch.hmwatchmanager_7.0.1-play_100802.apk -d com.huami.watch.hmwatchmanager_7.0.1-play_100802_JADX

Далее для исследование кода проще использовать результат jadx, но скомпилировать обратно получится только результат apktool, поэтому изменения придется делать в байткоде.

Для начала я убедился что это приложение поддерживает ну или когда-то поддерживало MiBand. Для этого я нашел несколько упоминаний MiBand 7 (Официально он называется Xiaomi Smart Band 7). Его кодовое название в приложении “MILI_L66”.

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

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

https://hlth.io.mi.com/download?redir=7800&amp;mac=CE82E4D50...

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

В ней указан мак адресс, pnpNumber, pnpVersion - это похоже какие-то идентификаторы устройства. Я пробовал их заменить, но это не помогло, поэтому я решил посмотреть, какие qr коды у других устройств zepp при сетапе. В гугл я нашел видео в привязкой Amazfit Band 7, отсканировал код, получил такую ссылку:

https://api-watch.huami.com/forwarding/watchUS?macAddress=C9...

Эта ссылка ссылается совсем на другое доменное имя. Далее я решил попробовать просто подставить в этот URL macAddress из своего qr кода и сделать с этого url qr код. И это помогло, мои часы подключились, приложение засетапило их как Amazfit Band 7.

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Я обнаружил что весь функционал из приложения Xiaomi здесь есть и я могу полноценно настраивать свои часы. Но после сетапа приложения понимало что у меня не Amazfit а Mi Band и не давало возможности ставить никакие приложения и циферблаты для Amazfit. Поэтому дальше я решил переделать приложение.

Перекомпиляция приложения

Чтобы приложение дало мне возможность ставить mini apps на часы, я решил заставить его думать что у меня не Xiaomi Smart Band 7, а Amazfit Band 7. Для этого таже как и для Mi Band 7, нашел кодовое название для Amazfit Band 7 - “MiliBari”:

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Далее нашел все упоминания MILI_L66 и MILI_BARI. Самым интересным показался класс HMDeviceSource:

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Вы можете в нем увидеть коды соответствующие разным типам устройств - их идентификаторы.

Далее необходимо переключиться на байткод, который нам выдал apktools.

Здесь я тоже нашел байткод класса HMDeviceSource$a.smali и изменил в нем 3 строки как на скриншотах:

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост
Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Теперь можно собрать его обратно, подписать, установить. Оригинальное приложение придется сначала удалить, так как подпись теперь не оригинальная.

apktool b com.huami.watch.hmwatchmanager_7.0.1-play_100802 --use-aapt2 apksigner sign --ks-key-alias alias_name --ks-pass pass:123456 --ks release-key.keystore com.huami.watch.hmwatchmanager_7.0.1-play_100802/dist/com.huami.watch.hmwatchmanager_7.0.1-play_100802.apk adb install com.huami.watch.hmwatchmanager_7.0.1-play_100802/dist/com.huami.watch.hmwatchmanager_7.0.1-play_100802.apk

Теперь можно снова логиниться в приложении и подключать Mi Band как я описывал выше, изменяя qr код.

Работа перекомпилированного приложения

После этих манипуляций приложение начало отображать функционал как для amazfit band 7! Ура! На изображении сначала будет Mi Band 7, но если поменять циферблат, то оно сменится на amazfit band 7. У меня циферблат от Аmazfit встал как родной.

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост
Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Также теперь появилась кнопка App Store, там можно поставить приложения из магазина для amazfit band 7. Не все заработали идеально, но большинство. Их почему-то в магазине пока только 5. Видимо пока весьма маленькое сообщество разработчиков)

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

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

Создание проекта

На 4PDA я нашел проекты пользователя MelianMiko. Он сделал и симулятор mi band, и множество приложений, и утилиту для сборки проектов - zmake. Можете ими воспользоваться для создания простых приложений, но как я понял zmake создает проекты только без сервисной части, выполняемой на телефоне. Еще в отличии от официального сборщика он, не сжимает код в bin файл, а оставляет в формате js(Тут может ошибаюсь, поправьте если не так). Симулятор к сожалению не работает под Linux и MacOS, поэтому я им не пользовался, вместо него использовал официальный симулятор Amazfit band 7.

Для создания проекта я использовал официальную утилиту zeus для ZeppOS. Новый проект можно создать командой zeus create project-name. Необходимо выбрать “1.0 API”, апи второй версии MiBand 7 не поддерживает.

Далее опишу содержимое собранного приложения, это не очень нужная информация, просто для общего ознакомления.

Когда проект будет готов, его можно собрать командой zeus build. В папке dist появится архив в формате zab, его можно открыть как простой zip архив. В нем манифест с описанием приложения и архив common.zpk, который тоже открывается как zip архив. В нем уже можно увидите основные составляющие приложения:

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост
  • Файл device.zip содержит код выполняемый на часах, ему можно сменить формат на bin и поставить даже через приложение для установки циферблатов.

  • Файл app-side.zip сожержит код выполняемый на стороне телефона.

  • Вроде еще может быть файл, описывающий настройку mini app с помощью приложения телефона.

Отличный набор примеров приложений, в том числе с сервисной частью, есть на github. Я, как основу, взял пример “fetch-api”.

Настройка моста

Тут нет ничего особенного, все из документации ZeppOS. Необходимо залогиниться в один аккаунт в приложении на телефоне и в приложении симуляторе. Включить режим разработчика в приложении и потом выбрать часы в списке устройств, открыть внизу настройки разработчика и в выпадающем списка нажать кнопку включения моста. После подключиться к мосту надо и в приложении симуляторе, нажав кнопку Bridge.

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Теперь можно пользоваться консольной утилитой zeus для отладки проекта:

zeus bridge
сonnect
install

Запрос в интернет по кнопке на часах.

Как я уже писал выше, я взял за основу пример проекта с официального гитхаб аккаунта zepp os, “fetch-api”. Изменив код в app-side, я сделал запрос с телефона на домен ident.me, чтобы получить мой текущий внешний ip, ради примера.

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

Вывод

В итоге я получил небольшое приложение на часах, которое может когда угодно выводить мне мой внешний ip. Это конечно не та цель, к которой я стремился.  Моей целью было продемонстрировать, то что на самом деле у часов Mi Band 7 есть скрытый, программно ограниченный функционал. Эти часы могут не просто менять циферблаты, но и работать с приложениями. И даже отправлять данные через телефон в интернет и получать ответ. Такие приложения можно использовать например для управления умным домом) Вероятно в будущих версиях часов об этом официально заявят, но пока такого нет. Даже на Band 7 Pro официально не стоит zepp os.

Пишем приложение на Mi Band 7 с сервисной частью Xiaomi, Mi band 7, Реверс-инжиниринг, Взлом, Информационная безопасность, Гаджеты, Хакеры, Android, Java, Разработка, Длиннопост

P.S. Это была моя первая статья. Надеюсь вам было интересно, пишите комментарии, буду рад любой критике!

Недавно я создал телеграм канал. Там я планирую регулярно делиться интересными мыслями по темам информационной безопасности, программирования и нейросетей. Если вам интересны такие темы, присоединяйтесь) буду делиться там подобным контентом.

Показать полностью 16
[моё] Xiaomi Mi band 7 Реверс-инжиниринг Взлом Информационная безопасность Гаджеты Хакеры Android Java Разработка Длиннопост
38
Riffaells
Riffaells
1 год назад

Создадим Свою Соц-Сеть?⁠⁠

Привет, пикабушники! Хотел поделиться интересной идеей – почему бы нам не создать свою собственную социальную сеть, вдохновленную популярным (уже нет) пикабу? Уверен, здесь есть много талантливых людей, и мы можем совместно сделать нечто удивительное!

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

Меня зовут Миша, и я могу взять на себя разработку приложений для Android, могу также попытаться сделать веб и настольные (Windows, Linux, Mac) приложения ну и для IPhone, но в этом мало у меня знания и ещё меньше опыта. И я хотел бы попросить у вас помощь в этом

Тем не менее, даже если у вас, дорогие друзья, нет опыта разработки, но есть желание помочь и имеются интересные идеи, то можете тоже присоединиться!

Предлагаю использовать Telegram (Discord?) для общения, так как это более удобный и быстрый способ (мне известный)

Если вы заинтересованы, оставьте комментарий или напишите в группу. Давайте воплотим эту идею в реальность вместе!

Это лишь Идея

[моё] Программирование Социальные сети Разработка Обратная связь Творчество Android Windows Linux Mac Инновации Веб-разработка Помощь Текст
17
12
Neossl
1 год назад

Разработка бесплатной детской игры Герои Гуджитсу⁠⁠

Поддержите игру!

Я ИТ-специалист, немного менеджер, немного директор и отец.
Так получилось, что ребенок у меня фанатеет от мультиков Героев Гуджитсу, смотрит их на ютубе, просит Алису постоянно ему их включить и конечно собирает игрушки.
Я раньше ему заказывал даже футболки на всемай...ру (набрасывал туда картинки и отправлял на печать).
Но тут прозвучало: Пап, скачай мне игру Гуджитсу на планшет!
Папа (я) начал шерстить интернет и понял, что нормальной игры нету. Есть всякие раскраски, 3 в ряд и прочие глупости, но вот игрушки для детей нету... Папа решил закрыть вопрос и сел думать... Отложил с ЗП немного, попросил разработчика помочь с графикой и кодом и сели работать...
*для ЛЛ - видео что получилось и ссылку на бесплатное скачивание найдете внизу.

К сожалению записывать стали не сразу, по по-порядку:

Нарисовали первых персонажей, игрались с механикой и первыми анимациями:

Дорисовали локацию, персонажей, врагов, механики врагов, баланс, более-менее анимации, работа кипит и вот что получается:

На этом моменте работа кипит уже больше месяца и было принято решение сделать тест-драй для основного заказчика игры:

Важный момент.
Ребенок у меня живет один, но вот дружит он с другими детьми и есть у нас соседи с которыми мы ходим в один детский сад (нам 4 года).
И несколько месяцев назад у соседки-четырехлетки было ДР, мы ей подарили одного из персонажей другой вселенной - Гудзониус-Кору... Это как Гуджитсу, но только девчачий мультик и все персонажи там девочки.

Вот такую

Разработка бесплатной детской игры Герои Гуджитсу Компьютерные игры, Родители и дети, Android, Приложение на Android, Игры, Игры на Android, Разработка, Gamedev, Отец, Unity, Rustore, Видео, YouTube, Длиннопост

Ну и так как они дружат и ходят друг к другу в гости мной было принято соломоново решение - делать игру для двоих, чтоб можно было играть на одной клавиатуре...
Сказано-сделано. Следующий тест-драйв было решено провести вдвоем:

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

После внесения всех правок мы таки решились, набрались смелости и сделали Релиз игры.


Релиз больше конечно у себя в голове, ибо показать особо игру некому, дети в восторге, но аудитории\блога кому можно показать - нету.
Поэтому было решено выложить версии для ПК и Мак на сайте, чтоб люди просто скачивали архив у себя на компе и запускали. А для размещения Android версии и браузерной версии (для игры в Яндекс.Играх) пошли в сторы - RuStore и AppGallery, т.к. это единственные кто не берет с разработчиков денег за размещения игр, даже с учетом того что игры бесплатные, без регистраций и встроенных реклам. ПОЛНОСТЬЮ БЕСПЛАТНО.
Скоро будет готово большое обновление с новыми механиками, заданиями, вводим новых сюжетных персонажей.

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

В AppGallery и Яндексе мы проходим еще публикацию.
RuStore нас уже опубликовали.

Ссылка на скачивание Android-версии:
https://apps.rustore.ru/app/com.yozef.HeroGudzitsu

Ссылка на скачивание версии для ПК:
https://yozef.ru/games/goojitzu

Показать полностью 1 5
[моё] Компьютерные игры Родители и дети Android Приложение на Android Игры Игры на Android Разработка Gamedev Отец Unity Rustore Видео YouTube Длиннопост
10
Партнёрский материал Реклама
specials
specials

Сколько нужно времени, чтобы уложить теплый пол?⁠⁠

Точно не скажем, но в нашем проекте с этим можно справиться буквально за минуту одной левой!

Попробовать

Ремонт Теплый пол Текст
777
monobogdan
monobogdan
1 год назад
TECHNO BROTHER

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед⁠⁠

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост



Многие из нас помнят компанию Nokia, как одного из лидеров мобильного рынка и производителя самых разных, необычных устройств, которые опережали свое время на много лет вперед! К сожалению, нынешняя Nokia — это уже совсем не та компания, которую мы любили и которой отдавали предпочтение при выборе мобильного девайса. Однако ещё во времена перехода под крыло Microsoft, практически под самый закат, финны сделали шедевральное устройство на десктопном Linux, которое до сих пор находит отголоски в современном мире смартфонов. И имя этому шедевру — Nokia N9! Недавно мне написал почётный хабровчанинdlinyjи предложил подарить этого красавца мне: причём с полным комплектом! Почему он оказался прорывным и что общего имеет с Lumia 800? Читайте подробнее в статье!

❯ Что за гаджет?


Когда-то у Nokia было две основных платформы, на базе которых они выпускали свои портативные гаджеты: S40, на которой работали функциональные Java-телефоны, сейчас их называют «фичефонами», и S60 — версия Symbian, на которой работало большинство смартфонов этой компании. Финская корпорация смогла занять серьезный процент практически в каждом сегменте рынка: бюджетники (1110, 1202 «фонарик», 2700c), средний класс (5310 XpressMusic, 5230/5228, 6300), флагманы (N95, N91, N72/N73) и, конечно же, бизнес-сегмент (8800 Arte/Luna, E90, в каком-то смысле Vertu).


Однако помимо выпуска девайсов на стандартных платформах была у Nokia и команда разработчиков, отвечавшая за гиковские устройства, которые были предназначены исключительно для энтузиастов. Началось всё с выпуска одного из первых устройств в классе «интернет-планшетов», имя которому было Nokia 770 Internet Tablet. Устройство, вышедшее за 5 лет до появления iPad, предоставляло обычному пользователю почти все возможности портативного компьютера тех лет: серфинг интернета через Wi-Fi, прослушивания музыки и просмотр видео с флэшек RS-MMC, а также работа с документами.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост



Но это если смотреть с точки зрения обычного пользователя. На самом же деле устройство обладало огромными возможностями для разработчиков благодаря тому, что работало на базе ОС Maemo — адаптации десктопного окружения Linux под мобильные устройства. Nokia не просто выпустили на рынок занимательный продукт: они полностью открыли исходный код всей системы, позволяя кастомизировать прошивку как угодно, реализовали «магазин приложений» в виде репозитория с различными пакетами и позволяли запускать абсолютно любое Linux приложение, скомпилированное под ARMv5.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост



В то время это было как глоток свежего воздуха. Конечно же, уже существовали КПК на базе Windows Mobile, где пользователи вовсю кастомизировали прошивки: подменяли драйвера из устройства в устройство, делали патчи и твики реестра/ядра, русифицировали и подменяли встроенные программы. Однако WinMobile оставалась проприетарной операционной системой, где хоть и был доступ к исходному коду ядра для любого желающего (Platform Builder), без BSP (Board Support Package — порт системы на определенную материнскую плату) в этом практически не было смысла. Другое дело — пользователи планшетов от Nokia: там была полная свобода во всем!

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост



Отдельной особенностью Maemo оставалось то, что даже пользовательский интерфейс строился по принципам обычного ПК и на базе тех же библиотек. В качестве официальной библиотеки интерфейса, Nokia предлагала GTK с набором виджетов для построения общего Look&Feel системы, но никто не мешал использовать Qt, или, например, wxWidgets.

И вот так, из года в год, выходили всё новые и новые устройств на базе Maemo. После 770 был успешный N800, а позднее в том же году появился и N810 с QWERTY-клавиатурой. В репозиториях появлялось всё больше и больше софта и, хотя едва ли обычный пацаненок с района мог увидеть у кого-то в руках такое устройство, именно они, в паре с КПК, стали прообразами современных смартфонов. Но был ещё один важный нюанс: ни один из интернет-планшетов от Nokia не имел радиомодуля. Выходить в интернет предлагалось с помощью Wi-Fi или через Bluetooth. Таким образом, эти девайсы нельзя было назвать полноценными коммуникаторами и смартфонами…

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост



До 2009 года. Ведь именно в этом году Nokia представляет коммуникатор N900 с QWERTY-клавиатурой, который снабдили радиомодулем, благодаря которому он оказался способен как звонить, так и выходить в интернет через 3G. Кроме того, у N900 были все характеристики современного смартфона: достаточно мощный ARM-чипсет TI OMAP с частотой 600мгц, способный запустить Linux; 256 мегабайт оперативной памяти (топовые коммуникаторы имели 128мб); GPU PowerVR SGX530 (что вообще было редкостью в мобильниках тех лет и только Qualcomm встраивали Adreno вообще во все свои чипы); магазин приложений и, конечно же, тачскрин, пусть и резистивный! Подробнее про N900 читайте в моей соответствующей статье.


В 2010-2011 годах Android уже начал идти победоносной поступью, будучи предустановленным на самые разные гаджеты: от телефонов и планшетов до тв-боксов и электронных книг. iPhone уже успел полностью согнуть свою линию и доказать, что за гаджетами с емкостными тачскринами и мощным железом будущее. Symbian уже было тяжело конкурировать с мастодонтами рынка: не помогал даже Qt, а о нативном API системы говорить вообще не стоит (оно неплохое, но своеобразное), нужно было думать, куда двигаться дальше. Сделать свой Android смартфон? Продолжать работу над Maemo? Microsoft уже начали потихоньку потирать руки и пытаться прибрать мобильное подразделение Nokia к себе: сначала поставили в кресло CEO Стивена Элопа, а затем сменили курс компании с Symbian/Maemo на Windows Phone.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост



Symbian развивали и поддерживали до последнего, до 2012 года, когда Nokia совсем сдалась и прекратила выпускать серьезные апдейты, коим стал Symbian Bella. Nokia уже успела выпустить первые смартфоны линейки Lumia на базе Windows Phone и пыталась удержаться на плаву. Но у компании припасен ещё один козырь за пазухой. О котором знали в Microsoft, который действительно имел все шансы перевернуть мобильный рынок с ног на голову, и который развивали вместе с Intel. И имя ему — MeeGo!

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост



Nokia действительно могла перевернуть мобильный мир, если бы ей не мешала Microsoft. И не нужны были бы ей смартфоны на Android, когда у них самих была такая классная система. И ведь кто-то подумает «ну было и было», ан-нет, отголоски MeeGo раздаются и сейчас. Часть инженеров Nokia ушли развивать MeeGo в виде отдельной компании Jolla с смартфонами на базе Sailfish OS — дальнейшее развитие перспективной системы от Nokia. И как бы необычно это не звучало, сейчас Sailfish развивают в… России! Ростелеком выкупил контрольный пакет акций Jolla, что позволило реализовать свой форк под знакомым многим из вас названием Aurora OS! Я даже рискнул оставить заявку на закрытое бета-тестирование, авось и я смогу подержать в руках устройство на Авроре и даже что-то запилить на него, например, 3D-игрушку! :)

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост



Nokia N9 стал первым и последним гаджетом на базе MeeGo, на который будет крайне интересно взглянуть и… понять, что мы пришли ко всему тому, что Nokia реализовала много лет назад! N9 мне подарил мой читатель, наставник авторского дела и просто крутой мужик Сергей "@dlinyj" Долин! Этот человек сыграл довольно большую роль в становлении меня, как автора: давал советы касательно фотографий, стилистики текста, кое-где поправлял меня. И в один день он скинул фотографию N9 в родной коробочке со словами «хочешь же?))», заранее зная мой ответ! Сергей и сам успел поработать над Авророй, поэтому наличие у него N9 не вызывает вопросов.
Этот материал я решил подготовить на круглую и праздничную для меня дату — день рождения моего блога! Ровно год назад, 16 июля 2022 года, я написал свою первую статью — обзор на Samsung X450. :)

❯ Распаковываем...


Поставлялся девайс в большой коробочке, фирменного синего цвета и с гравировкой логотипа, как и свойственно всем флагманам Nokia. В N900 на коробке гравировали даже кнопки QWERTY-клавиатуры на силуэте устройства — даже над дизайном такой мелочи поработали знатно. Нас сразу встречает заветная надпись: Nokia N Series!

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост



Открываем коробочку и видим там комплект из: смартфона, буклетов, наушников и ЗУ. Всё весьма компактно и в чем то даже напоминает стиль iPhone.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост



Основные интерфейсные разъемы устройства расположены сверху: там и слот под SIM, и разъем для ЗУ, причем на магнитах (!).

Что самое интересное — у N9 был параллельный «собрат» на Windows Phone в виде Lumia 800. Несмотря на то, что работают они на совершенно разных чипсетах и имеет немного отличающийся тачскрин, у этих девайсов очень похожий дизайн корпуса, конструкция, полностью совместимые дисплеи с немного разной диагональю, у них даже есть некоторые сходства в разводке материнской платы.

Характеристики нашего устройства такие:

  • Чипсет: TI OMAP 3630, одно ядро Cortex A8 на частоте 1ггц.

  • GPU: PowerVR SGX530. Весьма неплохое видеоядро по тем годам, немного более мощное использовалось, например, в первом iPad. Есть поддержка OpenGL ES 2.0.

  • ОЗУ: 1гб. Очень серьёзный объем по тем временам, некоторые флагманы комплектовались лишь 512мб ОЗУ, что было стандартом индустрии в 2012-2013 годах.

  • ПЗУ: 16 или 64гб. По тем временам, очень серьезный объем памяти.

  • Камера: 8мп фотокамера с оптикой от Carl Zeiss. Данная оптика стала стандартом и визитной карточкой многих камерафонов от Nokia. Помимо съемки фото, смартфон способен записывать видео в 720p при 30 кадрах в секунду.

  • Дисплей: 3.9" AMOLED матрица 854x480.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост



Сергей прислал изначально полностью рабочий гаджет, что для моего блога обычно не свойственно — я люблю покопаться и в нерабочих девайсах. Однако некоторой адаптации под современные реализации смартфон всё же требовал и в первую очередь — обновление репозиториев.

❯ Патчим в программном плане


Поскольку MeeGo — это по сути, полноценный десктопный Linux, адаптированный под мобильные платформы, он точно также, как и Maemo, использует менеджер пакетов dpkg. Все приложения для этих систем распространяются в виде знакомым большинству линуксоидов пакетов .deb.

Однако есть целых два важных нюанса: в устройстве нет предустановленного файлового менеджера, откуда можно было бы установить минимально-необходимые программы, и устройство не всегда может установить «левые» dpkg даже после включения установки приложений из сторонних источников в настройках.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост


Установить файловый менеджер можно скачав соответствующий .deb и скинув его через Bluetooth. Я выбрал FileBox. Затем его можно установить в списке переданных файлов обычным тапом. Обратите внимание, что пакеты для MeeGo имеют подпись а-ля Symbian, поэтому если у вас не устанавливается ничего — проверьте дату и время.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост


Некоторые программы можно установить только в терминале, вручную вызвав dpkg -i с необходимым пакетом .deb. Для активации режима разработчика, который добавляет возможность связи с ПК и эмулятор терминала, нам нужно сначала обновить зеркала репозиториев с пакетами, установивэтот .debи затем активировать девмод в настройках. Смартфон докачает и установит нужные пакеты, перезагрузится, и мы сможем свободно пользоваться терминалом.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост


Теперь гаджет полностью работает и может оказаться весьма полезным. Так в чем же N9 оказалась шедевральна? Какие её концепции до сих пор заимствуют?

❯ Смотрим на MeeGo


В первую очередь, MeeGo ещё в 2011 году вводила концепцию полного управления системой жестами. Здесь вообще нет никаких кнопок «домой», «назад», «диспетчер приложений» — все это инженеры Nokia посчитали не нужным и реализовали всё взаимодействие благодаря простым и понятным свайпам. Обратите внимание, ничего не напоминает? Неужто кто-то с выходом десятки полностью позаимствовал фишку финского гиганта?



Кроме того, Nokia посчитали, что мобильной системе не нужен рабочий стол в его классическом виде. Схожий подход, где на домашнем экране сразу расположены все приложения, уже реализовала Apple еще в первом айфоне. Однако в айфоне домашний экран поделен на страницы, в то время как в MeeGo это список с возможностью создания подпапок. Причем рабочий стол с виджетами был до этого в Maemo, но Nokia решили не переносить его в MeeGo.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост


UX системы вообще очень необычный. Он пытается сочетать все лучшее из iOS, WP и отчасти Android. Да, здесь есть шторка уведомлений, но выглядит она максимально минималистично и единственная настройка — громкость звука. Да, часть параметров приложений можно найти в настройках — прямо как в iOS. Да, здесь уже был относительно строгий полу-Flat стиль, немного напоминающий стиль iOS 7 (который вышел на 2 года позже MeeGo). Даже меню опций нет, лишь значки действий снизу — как и в N8 на Symbian.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост


Кроме того, здесь довольно удобно реализован диспетчер задач. В Android он только-только появился в 3.0 Honeycomb, а в iOS он был реализован жутко неудобно. Однако, судя по всему, MeeGo не умеет сама закрывать или отправлять в сон приложения, как это делает Android и iOS — такова нативная линуксовая натура системы. Из-за этого, если открыть слишком много приложений, можно наблюдать небольшие лаги. Вообще, система действительно не сказать что работает уж очень плавно: яблочки тех лет работали гораздо шустрее и плавнее, однако по тем временам плавность системы достаточно приемлема.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост


Я решил установить некоторые приложения и использовать N9 в современном мире. И в целом, для каких-то базовых действий он отлично подойдёт и сегодня!

В системе есть браузер на базе WebKit — тот самый браузерный движок, что используется и в Safari на iOS, и долгое время использовался в стандартном браузере Android. Благодаря дисплею, страницы выглядят очень сочно, но только те, которые загрузятся :) И дело даже не в веб-стандартах, большинство страниц браузер сможет худо-бедно переварить. Однако встает проблема с сертификатами — браузер их не умеет игнорировать, если они просрочены, и вываливается в ошибку, отказываясь загружать сайт. Кроме того, браузер не поддерживает SSL 1.2, который использует большинство сайтов на данный момент.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост


Зато в системе полностью функционирует почтовый клиент, причем довольно удобный. И здесь открывается еще одна фишка системы: один менеджер для всех аккаунтов на устройстве. Подобную концепцию имеет Android почти с самого начала, но в MeeGo она выделена в отдельное приложение. Не исключено, что в будущем туда хотели добавить и менеджер паролей — было бы весьма удобно!

Что же касается самого клиента почты, то его без проблем можно настроить на Яндекс почту, и на gmail — только не забываем включить SSL (по умолчанию отключен) и использовать одноразовые пароли — двухэтапную аутентификацию большинство старых гаджетов не поддерживает.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост
Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост


И, конечно же, девайс подойдет для прямого применения — звонков. Помимо весьма удобного приложения номеронабирателя, N9 полностью поддерживает Nokia PC Sync и без проблем позволяет синхронизировать как контакты из vcf/outlook, так и фото/видео/музыку. Есть поддержка и CalDAV и некоторых других сервисов для синхронизации по сети.

Помимо всего прочего, у девайса отличный аудиотракт. Музыка в наушниках звучит отлично, кроме того, есть улучшалки от Dolby, благодаря чему девайс вполне можно юзать как плеер. Сергей похоже так и юзал его, судя по трекам в плейлисте. Само приложение не менее удобное и создавалось для взаимодействие с Ovi Music — аналогом iTunes от Nokia. Уже потом, музыкальный сервис от Nokia начали использовать в устройствах на WP.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост


А ещё устройство неплохо подойдет в качестве камеры. На 2011 год качество снимков весьма на уровне! Как уже сказано выше, девайс умеет записывать и видео в 720p при 30 FPS.

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост
Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

Полный фотосет есть на imgur.

А ещё смартфон сможет статьи отличной платформой для прохождения отличных мобильных игр — без доната и таймеров!

Nokia N9 — уникальный Linux-смартфон, опередивший своё время на много лет вперед Гаджеты, Смартфон, Разработка, Linux, Android, Nokia, Meego, Nix, Unix, Мобильные телефоны, Операционная система, Железо, Microsoft, Windows Phone, Nokia Lumia, Видео, Вертикальное видео, Длиннопост

❯ Заключение


N9 получился первым гиковским устройством, которое могли без проблем использовать и обычные пользователи. Nokia вложили много сил и времени для того, чтобы привнести в N9 революционные по тем временам идеи, да так, что некоторые фишки потом у неё «позаимствовали» сами гиганты индустрии!

И очень хорошо, что история MeeGo не закончилась на этом. Кто знает, быть может эта система когда-нибудь сделает камбэк и скинет обросший кучу легаси Android? А вы как считаете? Жду ваше мнение в комментариях!

Показать полностью 23 1
[моё] Гаджеты Смартфон Разработка Linux Android Nokia Meego Nix Unix Мобильные телефоны Операционная система Железо Microsoft Windows Phone Nokia Lumia Видео Вертикальное видео Длиннопост
126
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии