Activity Launcher fork
В апреле закончил переписывать форк достаточно известного android-приложения.
Впервые наткнулся на него, когда нужно было перенести приложения на sd-карту на старом xiaomi. В прошивке такая возможность есть, но интерфейс недоступен. Activity Launcher как раз показывает все установленные в прошивке приложения, без ярлыков, системные и т.д. Также можно заглянуть "внутрь" приложения, посмотреть из каких activity (упрощённо - экранов) оно состоит, и может быть даже запустить приложение не со стартовой страницы.
В дальнейшем приложение отлично помогло для изучения прошивки телевизора. В общем, штука простая и полезная.
Но автор приложения в 2022 году решил поиграть в политику и сделал вот что:
Смысл такого акционизма решительно непонятен: вреда никакого - opensource не закрыть, вернуть всё назад можно элементарно. Чем и занимался народ в соответствующей теме на 4pda, например
Я пошёл чуть дальше:
✅️ проаудировал весь код (доверие к такому автору утеряно). Код в целом ужасный, но для опенсорса это норма.
✅️ добавил некоторый функционал, которого нет в оригинале.
✅️ добавил некоторый функционал, которого нет в оригинале.
✅️ разумеется, вернул русский язык.
Получившийся проект был выложен в Рустор в начале 2023 год под названием Activity Launcher fork. Исходники форка со временем также были перемещены с gitbub на gitflic (российский сервис)
На текущий момент у форка десятки тысяч пользователей, хотя усилий по его продвижению я не предпринимал, делал проект в первую очередь для себя.
В 2024 году появилась необходимость освежить "азы" современной android-разработки и Activity Launcher был выбран подопытным.
Идея состояла в том, чтобы:
✅️ разделить интерфейс и данные. Условным "бэкендом" тут является просмотр всех приложений при запуске через PackageManager. В "польской" версии 1.х приложения загружались внутри адаптера, за 10 лет андроид-разработки впервые увидел такой подход 😁
✅️ переиспользовать слой данных и добавить планшетный интерфейс.
Работы начал осенью, в апреле появилось время чтоб закончить. Получился такой стек:
✅️ Java 11 в качестве языка программирования (котлин безусловно хорош на больших проектах, но здесь избыточен, только увеличивает время компиляции и размер apk)
✅️ Dagger 2 в качестве DI
✅️ Классическая MVVM архитектура на androidx: LiveData + ViewModel
✅️ Для асинхронной загрузки пакетов использовал обычный JVM Thread, что-то более мощное тут избыточно
После вытаскивания данных во вью-модели написать альтернативный интерфейс для плашентов не составило труда. Побочные плюсы архитектуры: приложение стало устойчиво к переконфигурациям, например к повороту экрана.
Оригинал тем временем был переписан на котлин (также некачественно, как и java-версия) и 20 апреля 2025 автор даже вернул обратно русский язык, но наши дороги уже разошлись.
Кому интересно изучить или присоединиться к разработке, ссылки:
Оригинальный проект: https://github.com/butzist/ActivityLauncher/
Мой рустор-форк: https://gitflic.ru/project/sash0k/activitylauncher/
android
opensource
импортозамещение