Как стать автором
Обновить

Android лончеры. Три ошибки разработчика

Время на прочтение3 мин
Количество просмотров2K
Уже в таком далеком октябре 2014 года я написал пост об опыте взаимодействия со смартфонами, их оболочках и о своем представлении идеального лончера для Android.



C тех пор и правда утекло много времени. И если тогда я только “прощупывал почву”: работал с тестовыми сборками, изучая исходники стандартного решения от Google, готовился к презентации идеи на краудфандинговой платформе и осмысливал отзывы пользователей, то сейчас уже речь идет о готовом продукте.

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

Берясь за разработку лончера, сложно было представить, как они пишутся и какой объем функционала закрывают. Кто знает, решился бы я снова браться за такой проект, зная какой объем работы предстоит. А велик он в первую очередь количеством мелочей, которые должны быть учтены. Речь тут и о внедрении своего функционала и об оптимизации лончера для различных версий ОС и размеров экранов. На данный момент лончер собрал практически все доступные разрешения безопасности, прям, как заправский вирус, но другого пути не было, ведь «Умные плитки», которые я придумал, взаимодействуют со многими сторонами Андройд.


И это еще не все на скриншоты влезло

Когда были изучены конкуренты, пришло время искать легальную базу для воплощения идеи, писать приложение такого объема с нуля совсем не хотелось, да и возможностей таких не было. Выбор пал на дефолтовый гуголовский «launcher2», который был вытянут с grepCode. Я не знаю на сколько это законно, но почти уверен, что там опенсорс. Тут стоит отметить, что это достаточно старая версия классического лончера (есть уже версия 5). Оглядываясь назад, могу констатировать, что это была первая и самая значимая ошибка. Эта база оказалось действительно очень старой и не умела таких уже «маст хэв» вещей, как, например, элементарное управление количеством рабочих столов и т.п. «Почему не базу поновее?», — спросите вы. В тот момент я думал об обратной совместимости для ранних версий Android.

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

Дальше было немного проще – нужно было избавиться от ненужных компонентов. Запросто! Но это и была ошибка №2 – где-то я перестарался, избавившись от чего-то совсем не лишнего. Последующий анализ и возврат утраченного занял очень много времени и сил.

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

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

А еще была «мини галерея», не желающая листать фотографии, «плитка СМС», которая должна была подружиться со всеми мессенджерами сразу и «быстрые настройки» с бесконечной чередой сюрпризов.

Поборов большинство из перечисленных проблем и доведя до более-менее приличного состояния я решил опубликовать SlideUP Launcher в Google Play и это было моей третьей серьезной ошибкой. Думаю не нужно объяснять почему, ведь сырой продукт еще никому успеха не приносил.

P.S. Забегая вперед скажу, что сейчас лончер переписан с нуля на новой базе, дописан функционал и исправлено огромное количество ошибок. И я понимаю, что это далеко не конец пути: есть твердый фундамент, но еще многое предстоит сделать, благо с идеями проблем нет, как и с новыми трудностями, которые непременно вылезут в самых неожиданных местах. О решении начать все сначала, сюрпризах Lollipop и многом другом я напишу в следующий раз. Как говорится “to be continued…”
Теги:
Хабы:
Всего голосов 4: ↑2 и ↓20
Комментарии2

Публикации

Истории

Работа

Swift разработчик
31 вакансия
iOS разработчик
24 вакансии

Ближайшие события