Android сломался или я чего-то не понимаю? — Обсуждение на Reddit
AppTractor
На Reddit снова обсуждают разработку под Android. Автор в своем треде пишет:
Привет всем, извините, что я пришел с негативной темой, но мне просто нужно проветриться и услышать чье-то мнение.
Прежде всего, я хотел бы отметить, что я был разработчиком Android со времен Eclipse, так что я видел, как платформа развивается. Как и многие из вас здесь.
Можно подумать, что после стольких лет мои навыки работы с Android должны быть превосходными, и я могу написать практически любое приложение с нуля, но я часто обнаруживаю, что гуглю самые обыденные вещи. Вещи, которые я реализовывал, наверное, больше 100 раз за свою карьеру. И по какой-то причине вместо того, чтобы лучше понять, как это работает, я чувствую себя все более и более растерянным.
Мне кажется, что все было хорошо и все было «под контролем» примерно до того момента, когда они представили AndroidX/Jetpack и кучу фрагментированных зависимостей.
Мне кажется, что с тех пор мой опыт работы с Android превратился из 80% разработки, 20% гугления в поисках решений, в что-то вроде 40% разработки и 60% выяснения, какую зависимость мне нужно добавить в мой проект, чтобы получить какой-то новый компонент пользовательского интерфейса. Или я хочу сделать свое существующее приложение Android 15 дружественным к edge-to-edge. И я провожу следующую неделю, выясняя 3 разных способа подхода к системными отступами. Причем все они, кажется, конфликтуют друг с другом, один работает на одном экране, но ломает другой.
Хуже всего, когда я думаю про себя «ладно, я буду образцовым разработчиком и действительно прочитаю и пойму документацию», а потом документация оказывается абсолютным дерьмом, устаревшей, без примеров и с абсолютным минимумом объяснений.
Затем я решаю поискать в Google конкретную проблему, убедившись, что включаю в поиск правильное ключевое слово «Android». И все равно получаю решения для React Native или Flutter.
Это просто… похоже на хаос. Я также являюсь iOS-разработчиком. Я начал работать с платформой через пару лет после Android, так что теоретически у меня должно быть меньше опыта, но моя разработка под iOS настолько гладкая, что я начинаю бояться запуска Android Studio.
Не знаю, синдром ли это самозванца или что-то другое, но я чувствую себя «медленным и тупым» всякий раз, когда разрабатываю для Android. Как будто я должен быть намного лучше, чем сейчас.
Кто-нибудь еще в той же лодке?
Android-разработка очень перегружена и в нее сложно вникнуть? — Обсуждение на Reddit
Может быть, я что-то пропустил, и вы можете разрабатывать для Android в vim, используя какой-нибудь аккуратный фреймворк или биндинги, или что-то еще, что будет гораздо менее сложным?
Я занимаюсь Android с 2008 года, и со всем, что вы сказали, я согласен на 100%. Я думаю, что проблема в том, что Google часто пытается быстро изменить вещи, не делая передышки, чтобы сделать основы устойчивыми. Затем, в конечном счете, они обесцениваются в свете «нового способа». Они даже не удосуживаются написать хорошую документацию, так что вам часто приходится играть с вещами, чтобы просто заставить их работать. Предполагается, что Jetpack должен упорядочить эту работу, но быстро появляющиеся новые зависимости создают новый вихрь проблем. Я пишу под iOS уже около 3 лет, и у них нет таких проблем. У них есть свои проблемы, но, по крайней мере, когда вы изучаете концепцию, она остается стабильной гораздо дольше.
У меня 10-летний аккаунт разработчика в Play Store, и я вот-вот потеряю его, потому что консоль разработчика глючит и не принимает мой номер телефона. Что ж, у меня тоже нет мотивации продолжать сотрудничество с Google — зная, что доходы моей компании в основном зависят от веб-сайта и приложения для iPhone, в то время как приложение для Android практически разрушает бизнес-процессы. Google делает отличную работу, вырывая неудачу из пасти успеха.
Политика Google Play/отсутствие должной поддержки и бесконечные изменения API — вот самые большие проблемы Android на данный момент.
Складывается ощущение, что Android — это просто побочный проект Google. Как будто его вообще не воспринимают всерьез. Это очень плохо, потому что люди делают на этом карьеру, а на данный момент это, честно говоря, похоже на шутку.
Это и есть побочный проект, их основной — реклама.
Я определенно в меньшинстве, но у меня совершенно противоположный опыт. Я здесь уже 7 лет, но Jetpack кажется мне гораздо более стабильным. Я согласен, что документации порой не хватает, но я еще не сталкивался с тем, чтобы что-то полностью меня блокировало.
Мне также кажется, что каждый год Google делает что-то, что помогает закрепить определенный шаблон разработчика. Они официально рекомендовали MVVM, а теперь и Jetpack. Это определенно кажется более последовательным, чем когда я беру новый проект, а он оказывается совершенно другой архитектуры — MVC, MVP, MVVM, ReduxKotlin и т.д.
Результаты поиска, конечно, могут выдавать мне ненужные вещи, но я связываю это скорее с тем, что алгоритм Google меняется с годами, а не с тем, что Android становится неуправляемым.
Нет, вы не в меньшинстве. Я считаю, что большинство «старой гвардии» Android-разработчиков думают так же, как вы (я тоже). Просто многие из них больше не работают в Android или не активны здесь.
Раньше я занимался и iOS, и Android. Начинал с Eclipse + Java и Xcode + ObjC. Сначала я всегда сначала писал для Android, так как мне было проще создать пользовательский интерфейс и бизнес-логику, поскольку я лучше разбирался в Java.
Когда у меня появлялась возможность, я использовал AppCode вместо Xcode. Xcode, на мой взгляд, слишком часто сбоил и был лишен ряда функций, особенно в части контроля версий.
В обоих случаях все начинало развиваться слишком быстро, поэтому в итоге я остановился на Android с Kotlin и Android Studio. Не могу сказать, что скучаю по iOS или Xcode, но, по крайней мере, я могу в них разобраться и поговорить с нашей iOS-командой, понимая их жаргон. С iOS все прекратилось, как только появился Swift.
С той скоростью, с которой развиваются оба направления, трудно просто не быть наименьшим общим знаменателем. В Android каждую чертову неделю появляется так много «новых и лучших» способов сделать это. У нас были AsyncTask, все Activity, Shared Pref, List View, все веселые макеты, а потом появились корутины, фрагменты, хранилище данных, recycler view, ConstraintLayout, dagger, затем Compose и модели представления, и наблюдатели, и hoisting переменные, и Hilt или Koin.
Код, над которым я работаю, все еще на 22% состоит из Java. Есть еще Async-задачи, HTTPHelper и т.д. Попытка обновить все это просто не удастся.
В побочных проектах я использовал Koin, затем Hilt. Single Activity с навигацией и safeargs. Корутины и Retrofit. Я знаю, как использовать некоторые из новых вещей, но не все, и я чувствую, что я ржавею на текущей работе, так как мы используем такое старое дерьмо, что это сводит с ума.
Что бы я ни искал об Android, информация на 85% устарела, поэтому мне приходится постоянно искать не устаревшие способы решения задач. Compose еще хуже, потому что они меняют тонну синтаксиса в каждом выпуске. Большая часть документации непригодна для использования, поэтому трудно добиться какого-либо прогресса в написании кода.
Вы имеете полное право считать, что Android сломан на уровне разработчиков. В последнее время ситуация становится все хуже.
Я занимаюсь разработкой Android столько же, сколько и вы. И мой опыт сильно отличается от вашего.
В последнее время мне действительно нравится разработка под Android. Она стала намного лучше. Она стала сложнее из-за политик, которых раньше не было, но появилось гораздо больше библиотек и API, которые намного лучше, чем те, что были в самом начале.
Но вам нужно следить за тем, что меняется, и адаптироваться.
С Compose стало намного удобнее работать. Корутины и Kotlin просто потрясающие по сравнению с тем, что было у нас.
Библиотека Media 3 позволяет легко интегрировать видео. Работа с фоновой работой стала сложнее, но Work Manager отлично справляется с этой задачей. Room очень удобен в использовании по сравнению с прямым использованием курсора. Gradle Kotlin DSL лучше, чем groovy, а каталог версий/плагины делают управление несколькими модулями в проекте намного проще. Hilt — отличный DI для Android и т.д…
Сложнее обсуждать что-то подобное абстрактно. Не зная, с какими проблемами вы столкнулись, мы можем просто сказать 2 противоположные вещи. Может быть, я никогда не использовал что-то, что доставляет вам проблемы, или, может быть, вы делаете что-то неправильно, что вызывает у вас проблемы, которых у меня нет.
Мне кажется, что ваш пост слишком расплывчат, чтобы привести к полезной дискуссии, и я приглашаю вас поделиться тем, с чем вы боретесь, а еще лучше провести сравнение с iOS.