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

Комментарии 226

говорят, что в среднем обладаnель andoid-устройства тратит до 10 минут в день для объяснения того, почему он не купил iphone
Так говорят те, кто при виде андроид-устройства неизменно удивленно спрашивает «а почему не айфон?!».
Так как они спрашивают об этом всех без исключения знакомых владельцев андроид-устройств, то статистика выходит стопроцентной.
Некоторые спрашивают, не айфон, а что это? Android ?! О, тут мультитач работает, хм, странно… и не айфон.
если почитать чуть дальше, можно убедится в ущербности андроида как платформы для разработчиков приложений, пользователей маркета и так называемую «супермегафичу, о боже мой, слава богу не айфон» пресловутую открытость.
полностью согласен.
недавно взял себе планшет на андроиде, решил поставить нужных программ из маркета. и что вы думаете? я нашел кучу мусора, но среди этой кучи не было ни одного нужного приложения! кое-как, спустя пару часов после активного поиска, я нашел пару нужных приложений и все. я поклялся больше не возвращаться в маркет без большой необходимости.
Свинья грязь найдет.

Я за пол часа надергал с маркета весь нужный софт и не сказал бы, что там не нашлось бы чего то без чего мне совсем плохо.
То есть, Вы хотите сказать, что я искал намеренно мусор?
Я искал лишь то, что было нужно. Комментарий есть ниже, который говорит о коряво работающим поиске.
Я в конечном итоге тоже надергал необходимый софт, но до него нужно было добираться, примерно как через тернии к венцу империй.
Я не знаю, что вы искали, но у меня, как у владельца смартфона и планшета на Андроид не было абсолютно никаких проблем с поиском приложений. Я не нашел ничего, что мне надо и чего там нет.
в конечно итоге я тоже нашел, все, что мне было нужно. вопрос лишь в другом, как долго я до этого добирался
Понадобилась мне Java-машина. В маркете не нашёл. Нашёл apk-файлы, поставил — не работают. Рута ставить не хочу — телефон не мой, мало ли что.
Плохо это.
Хотите сказать, что java на айфоне доступна?
Хочу сказать, что мне пофиг на Яву на Айфоне, а вот невозможность легко поставить её на Андроид — раздражает.
Хочу сказать, что мне пофиг на Яву на Айфоне, а вот невозможность легко поставить её на Андроид — раздражает.
Программы то там есть, что-то глубоко не так с поиском, не зная названия, нужное приложение найти практически нереально.
даже зная название, программу будет найти реально сложно.
например. искал игру asphalt. Миллион никак не связанных с поиском результатов, и лишь где-то в конце — нужный.
Хм… Открываю маркет, ввожу Asphalt — market.android.com/search?q=asphalt&so=1&c=apps — первая же игра — настоящий асфальт от производителей именно асфальта. Что я делаю не так?:)
И так же с любой другой игрой — если игра идет на смартфоне/планшете она всегда будет первой в списке.
В веб-маркете:
Asphalt HD Lite
Outlaw Racing 2011 — ладно, это хотя бы гонки
Help Out — какое вообще отношение?
Asphalt HD платный
В маркете на устройстве:
Outlaw Racing 2011
Help Out
Asphalt HD платный
Кирпичи
Minesweeper
и т.д. Asphalt Lite не нашелся вообще. Игры причем в целом получше ищутся, с приложениями хуже. Веб маркет ищет заметно лучше, но не идеально. На устройстве лучше даже не пытаться.
Ну так прошлый автор топика доказывал, что на первой странице не может найти настоящий асфальт. Я ему привел обратный пример — все прекрасно находится. То что мусора много — я полностью согласен, это обратная сторона открытости, но некоторые доводят это до степени, вроде, — не могу найти вообще ничего, все на миллионных страницах и тд и тп.
Такое тоже вполне может быть. В один момент времени есть, в другой — нет. Я как-то Dialer One, что ли, не мог найти в маркете в принципе, пока по прямой ссылке не перешел.
зависит от того, что считать страницей. и да, я никому ничего не доказывал. это сугубо мое мнение, которое сложилось от использования маркета впервый раз.
> Help Out — какое вообще отношение?

Цитата из описания Help Out:

«Некоторые из неожиданных и восхитительных скинов этой игры:


4- Unblock Asphalt»

Бинго!

По остальным результатам ничего такого очевидного, но, кажется, разработчик может в описание добавить ключевые слова, которые не видны пользователю, но поиск по ним тем не менее ведётся.
именно так, ключевики. Больше того — они в маркете прекрасно видны пользователям (на устройстве — после описания приложения)
Проведенный в интернете опрос показал, что 100% людей пользуются интернетом.
Говорят, что в среднем, обладатель iphone-устройства в зависимости от числа знакомых тратит от 10 минут до 16 часов в день, выспрашивая знакомых с андроидом, почему они не купили iphone.

ЗЫ Ждите релиза iphone 4SJ — с частичкой мощей святого равноапостольного Стива.
Со всем согласен, а вот про Стива — зря.
Дело в том, что рынок андроидных приложений ещё пока меньше эппловского. И для того, чтобы покрыть примерно аналогичное количество пользователей, как и на айфоне, приходится клепать «под всех». Это выматывает.

Честно говоря, мне эта ситуация напоминает всё таки больше ситуацию с разными браузерами — верстать и под то, и под это, и под третье… Хотя всеми этими браузерами пользуются самые разные люди из самых разных ценовых сегментов.

Сорри если несколько сумбурно…
Хотите сказать, что если бы рынок андроидных приложений был в 2 (3,5,10) раз больше, чем сейчас, вы бы не стали клепать «под всех»? X денег терять нельзя, а Х*2 терять уже можно?
Просто это бы не было уже аргументом в спорах iPhone vs Android ))

А под кого клепать решать уже будет каждый сам. Без оглядок на iPhone. Это как Гугл например — ведь он отменил поддержку IE6. Хотя он определённо теряет с этого деньги. Пусть и немного, но сам факт…
Вот именно, что оглядок на айфон тут быть не может.
Они будут, пока, повторюсь, рынок приложений в Андроид Маркете будет ниже или равен, чем у iTunes. Почему? Потому что разработчик будет ориентироваться тем, сколько он сможет выручить денег за приложение и какие к этому трудозатраты приложить придётся. Для Андроида при прочих равных этот коэффициент окажется менее благополучным чем у Айфона.

Понимаете, диверсификация — а это именно она — безусловно хорошо в данном контексте — но она появилась СЛИШКОМ рано. НЕЧЕГО ещё диверсифицировать.
Вы путаете мух с котлетами.

Есть три цифры:
A — сколько я заработаю с приложения для айфона
B — сколько я заработаю с приложения для всех возможных андроидов
C — сколько я заработаю с приложения только для тех андроидов, что совпадают по конфигурации с айфонами

Так вот B зависит от C, но никак не зависит от А. Если уж разработчик решил писать для Андроида по каким-то причинам, значит ему надо решать между цифрами B и C, и сравнивать трудозатраты именно на них. Причем тут А? Это отдельный рынок, для него в любом случае надо либо делать, либо не делать, принимая это решение отдельно.
В том, что A очень сильно больше C. Значительно сильнее.

Вы можете назвать пример приложения, которое можно было бы выпустить только под рынок C, и которое не проканало бы для рынка A? Не забывайте, что, поскольку рынок C — рынок бюджетных смартфонов, то и платёжеспособность ниже.
Снова: причем тут А, когда вы решаете между B и C?

Грубо говоря, чтобы заработать деньги А, мне нужно работать неделю. Чтобы заработать деньги B, мне нужно работать полторы недели, либо неделю чтобы ограничить это деньгами С.

В итоге я зарабатываю либо A+B, либо A+C, либо A, проработав либо две с половиной недели, либо две недели, либо одну неделю. Вопрос в том, стоит ли разница между B и C этой половины недели, а не в том, насколько А больше B.
В том, что трудозатраты на A и C одинаковы (в соответствии с вашим примером — одна неделя либо туда, либо туда), а отдача от A больше — потому что рынок больше. Выбираем что? Правильно, A.

Рынок C пока ещё слишком слаб, о чём я изначально и говорил. Собственно если B+C больше чем A — то для C становится выгодней разрабатывать. Хотя идеалом в данной ситуации было бы C больше A. Однако на данный момент B+C меньше чем A. В количественном выражении, не в качественном. График с «пакманом» — качественный, а количественный — первый.
Окей, представим себе ситуацию, что Эппл начинает делать бюджетные смартфоны на 320х480 и 240х320. Вызывая таким образом такую же фрагментацию. С чем вы в этом случае будете сравнивать трудозатраты и прибыль разработки под бюджетные айфоны?
Конечно же, с объёмом трудозатрат на самый большой рынок. Условно назовём этот рынок D, а рынок «элитных» айфонов — А. Если трудозатраты на A одинаковы трудозатратам на D (условно), а отдача от A больше — а на первых порах так оно и будет — то я выберу A.

Если вдруг C окажется выгодней (в смысле коэффициент прибыль делить на трудозатраты будет больше) чем D — отлично, вероятность, что я начну клепать под рынок C выше. Однако, если рынок C всё равно будет ниже рынка A — я всё равно с бОльшей долей вероятности буду клепать под A.
Никак не могу понять, почему вы себе ставите ограничение только на один рынок? Каждый рынок надо рассматривать отдельно и отдельно про него думать, лезть туда или нет. Неужели заработав тыщу баксов за неделю, вы откажетесь от еще одной тыщи баксов за еще одну неделю? Все-таки портировать свое полезное приложение существенно проще, чем придумать новое полезное приложение.
А с помощью каких механизмов расматривать отдельно-то?

Нету никакого смысла продавать коньяк за 30к рублей в ларьке где покупают только водку за 100 рублей.
От этого только убытки — как и финансовые, так и в репутации.

А в андроид маркете твое топовое приложение будет доступно и тем у кого двухядерный проце с 1.5 МГц, так и тем у кого 400 МГц проц. В результате тебе последние будут лупить плохие оценки и заваливать суппорт тикетами — а сделать ничего нельзя.
Ограничь доступность своего приложения только для топовых телефонов и радуйся.
Вопрос портирования — уже совсем другой вопрос.
Однако, положим, я действительно решил портировать приложение, написанное под A, на другой рынок. 1000 долларов возьмём за основу.
Пусть доля айфона и андроида равна — всё к этому идёт
Положим, что рынки C и D составляют примерно по 30% от общих рынков айфона и андроида соответственно (примерно такая картина изображена на ваших графиках).
Пусть трудозатраты составляли изначально 200 долларов, трудозатраты на портирование — 100 долларов.
Итак, первичный доход от А — 800 долларов. Куда выгодней портировать? Считаем:
1000*100/70 = 1430 долларов прибыли от рынков A + D. Соответственно на D выручка составит 430 долларов.

Поскольку рынки A+D=B+C, а D и C по 30% то получается, что выручка будет следующей:
A = 1000
B = 1000
C = 430
D = 430

Считаем доходы:
A = 1000 — 200 = 800 — 200 — потому что сюда изначально разрабатывали приложение с нуля
B = 1000 — 100 = 900 — 100 — портирование на другую платформу
C = 430 — 100 = 330 — аналогично B
D = 430 — 50 = 370 — 50 — потому что только изменение форм фактора, без архитектурных изменений.

Соответственно подо что я буду портировать? Правильно, под B, потом под D, потом под C. Рынок C на последнем месте!
Извиняюсь, лень уже думать и читать столько много букв :)

Моя мысль, в целом, проста: если бы айфон был фрагментирован, он бы приносил больше, чем сейчас, потому что были бы задействованы дополнительные сегменты рынка. Поэтому фрагментация андроида — плюс, а не минус.
На самом деле в этих расчётах я ещё не учёл дифференцированность по платёжеспособности. Так что выручки в секторе C и D будут ещё процентов на 20 ниже.
C = 244
D = 294
Да, конечно, сама по себе общие суммы A+D и C+B действительно выше, чем просто A и B, однако в данном случае A больше (или равен) чем B+C, а D=0. Именно таким образом НА ДАННОМ ЭТАПЕ существования Андроида нивелируется бонус от фрагментированности рынка.
Для тех, кто минусует в карму — повторю свою мысль.
Дифференцация — вещь хорошая. Однако НЕ НА ДАННОМ ЭТАПЕ развития Андроида. Это все равно, что попробывать понести на себе сразу 50 килограммов вместо нескольких заходов по 10 кг. Где вероятность надорваться больше?
Именно поэтому то и говорят о фрагментации так много. Она не плоха, она ПРЕЖДЕВРЕМЕННА.
Ну это смотря для кого преждевременна. Для разработчиков программ — может быть, а вот для покупателей бюджетных андроидов — совсем нет.
>… фрагментации фундаментальной — когда есть различные экраны, форм-факторы и так далее…
>фундаментальная фрагментация — это плюс для разработчика.
Можете пояснить эти слова. Имхо это заставляет делать не 1-2 дизайна ui, а 9-12. Плюс надо учитывать тач\не тач скрин и прочее. Если разработчик тратит столько сил на ui. То в чем плюс?
И еще хотелось бы немного обсудить про фрагментацию самих версий Андроида. Все таки не все производители обновляют постоянно.
Фундаментальная фрагментация расширяет рынок, дает больше пользователей, которых бы не было, если бы не было фундаментальной фрагментации. Не хотите поддерживать этих пользователей — не поддерживайте, никто вас заставляет.

Начиная с мая 2011 года все производители обязаны выпускать обновления в течение 18 месяцев.
Т.е. если у меня сейчас на смартфоне от Samsung версия Андройда 2.3.х я получу обновление до последней версии платформы (уже и не из ветки 2.x.x) Андройд?
Это в смысле, что каждый вариант формфактора — разный рынок. И под него разные приложения нужны, а не клепать одно и то же (хотя и можно). Вот основная идея статьи. Таким образом под каждый рынок остаётся как и раньше 1-2 ui. И только если ваше приложение покрывает сразу несколько рынков — надо клепать 9-12 ui.
Большинство разработчиков под Андроид хочет что бы приложение покрывало не много рынков (основанных на бюджете пользователей), а один рынок — рынок смартфонов на базе ОС Android
Ну а автор топика считает это некорректным подходом, вот и всё. Если посмотрите чуть выше увидите мои очень примерные расчёты, почему на данном этапе развития Андроида это бесперспективно.
>>> Вот как для них выглядит сравнение айфона и андроида:

Вообще-то так и есть на самом деле. То, что вы вырезали из диаграммы сектор, в котором, оказывается ничего нет (sic!) — какая-то антинаучная ерунда. А почему он тогда такой маленький? Надо было вырезать процентов девяносто, тогда бы сомнений в прелести фрагментации Андроида вообще не осталось.
Дело в том, что Эппл рассуждает по логике «скрипач не нужен», поэтому в этом секторе нет того, что могло бы быть, если бы они хотели занимать нишу бюджетных устройств тоже.
Поясню. Глядя на «неправильные» с вашей точки зрения диаграммы их можно трактовать так:

«Если я напишу приложение под iOS и реализую в нем поддержку двух разрешений, я покрою весь рынок айфонов. Если я напишу приложение под Android и реализую в нем поддержку двух разрешений, я покрою процентов 70 рынка.»

И это действительно так.

В ваших же диаграммах таких выводов сделать не получается. Выйдет что-то типа «Если я напишу приложение под iOS, то оно не запустится… приблизительно на 30% устройств которых никогда в мире не существовало.» Ну как-то… Странно, не находите?
Нет такой вещи как «рынок айфонов» или «рынок андроидов». Есть «рынок приложений для смартфонов». И вы никогда не сможете написать приложение, покрывающее весь рынок. Рынок огромен, вам всегда нужно выбирать его наиболее оптимальную для вас часть. Если вы ставите для себя вопрос о том «надо ли мне писать и под iOS, и под андроид, или только под iOS», то вы точно также при разработке под андроид должны задавать себе вопрос «надо ли мне писать под ldpi». И неважно, где и как существуют эти устройства.

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

К тому же, в iOS перейти на большее разрешение очень просто, так как оно ровно в четыре раза больше (в два раза в ширину и в два раза в высоту), т.е. пропорции экрана остаются те же. В простейших случаях достаточно просто добавить в ресурсы приложения картинки с большим разрешением и суффиксом "@2x" в конце имени файла — остальное iOS возьмёт на себя.

В простейших случаях достаточно просто добавить в ресурсы приложения картинки с большим разрешением и суффиксом "@2x" в конце имени файла — остальное iOS возьмёт на себя.

Вообще-то это оффтопик, но скажу лишь, что для Андроида это еще проще: можно вообще изначально делать только под hdpi, а под остальные плотности конвертация будет автоматической. Собственно, в последнее время я так и делаю.
А остальное делать через 9-patch и тогда можно не задумываться о разрешении экрана.
Но много еще проблем помимо экрана встречается.
поэтому в этом секторе нет того, что могло бы быть

Это неправда и автор заблуждается рассказывая что нет рынка бюджетных моделей. Он есть, он большой и это рынок айфонов предыдущих моделей. Производство старых моделей не останавливается даже когда начинаются продажи новых, потому что старые модели люди покупают как раз как «бюджетный вариант».
Этот процесс еще очень слабо повлиял на сегментацию. Потому что, например, никогда не было айфонов 240х320, или горизонтальных, или слайдеров. Но, кстати, именно этот процесс в недалеком будущем создаст среди айфонов точно такую же фрагментацию, как и везде. И это нормально.
Я немного запутался.

Фрагментация у iOS есть. Вам нужно определиться с тремя разрешения (айпад не выкидываем), тремя версиями ОС, двумя OpenGL.

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

Но если говорить об каких-то гипотетических устройствах, то пекмана можно и для андройда тогда с лихвой рисовать, потому что всегда будут такие запросы, которые никто не обеспечивает.
НЛО прилетело и опубликовало эту надпись здесь
А почему на втором рисунке Pac-Man в другую сторону смотрит?
Проблема не в том что фрагментация есть, проблема в том что нельзя управлять данной фрагментацией. Вы так просто говорите — не хотите делать приложение для определенного сегмента не делайте. Но забываете о том что вам просто не дают такой возможности.

Возможность сделать различные apk для различных типов устройств появилось недавно.
Возможности выборочно отключить устройства нет — и не факт что будет.

Вот есть такой «замечательный» телефон как самсунг i9000. Елки-палки, какое сильное желание его отключить. 20% тикетов в суппорт — от владельцев данного телефона. А 20% для популярной игры — это в числах более 100к тикетов! Доля в деньгах от него менее процента. Доля оценок в одну звезду от владельцев его — просто заоблачная по сравнению с другими устройствами. И сделать с этим ничего нельзя — вот такой замечательный телефон сделал самсунг, который просто тупо виснет при попытке проапдейтить приложение с маркета.

Вы говорите — не хотите бороться, не боритесь — а как??? Просто тупо забить и смотреть как тебе ставят одну звезду из-за особенностей телефона с которыми ты ничего не можешь сделать?

И вот недавно был замечательный апдейт маркета. Который для приложений который более менее объемные на примерно 10% телефонах (вполне определенных) стал глючить — не давал ставить апдейты. Гугл очнулся через недели две, после того как количество тикетов перевалило за 200к.

Что вот делать с такой фрагментацией?
Возможности выборочно отключить устройства нет — и не факт что будет.


Андроид Маркет, карточка приложения, раздел «Поддерживаемые устройства»:
image
Не работает.
Просто тупо не работает.
Проверено, работает на ура. Спасает от многих недоделанных аппаратов, вроде вашего случая.
Воот! Вот это про настоящую фрагментацию (правда, неизбежную, и понятно, какой тут сделан trade-off). А те, которые там хотели писать 9-12 разных ui под каждое разрешение, напоминают веб-мастеров, которые пишут «сайт оптимизирован по IE5 с разрешением 800x600». Век на дворе не тот, надо писать ui, не зависящий от разрешения!
Честно говоря вы работали с дизайнером? Которому вы пытаетесь объяснить то, что ты нарисовал не пойдет. У меня X экранов, а ты нарисовал для двух, давай-ка я тебя буду учить.
1. 9.png рисуем растягиваемые элементы.
2. Теперь думай как layout делать, где центровать, где что. Разрезай иконки одинаково и не оставляй полей!
В общем делай, все равно десять раз будем переделывать, а потом найдется какое-то не предсказуемое устройство.

Это не невозможно, это очень-очень сложно! Это не экран PC где много места, вы и так пытаетесь запихать побольше элементов, чтобы было удобно управлять, а тут еще вылазят телефоны с очень маленькими экранами. Иногда даже думаешь, может им половину кнопок убрать :) Убираешь — обижаются.
Вот вылазят минусы, самих устройств и глобальность рынка. К сожалению телефоны пока не PC, собрал и более-менее работает, а те у кого не работает, сами меняют отдельные части PC/ноутбука.

Получается, что у тебя Android и ты хочешь получить все, что от него можно, а то что телефон не тянет или это вообще проблемы какого-то чипа, ты и знать не желаешь. У меня Android — вынь и положь (вот так видят ситуацию разработчики ПО).

У меня на этом Android, хотя бы одна программа работать будет? (вот так видят ситуацию пользователи ПО глючных телефонов)
да, Galaxy S — весьма проблемный девайс :(
отключить можно, но он — всё ещё приличная часть рынка
Galaxy S и заблокировать не так-то просто… помню, когда я озадачился поиском всех его клонов и модификаций, был мягко говоря удивлён из количеством — порядка 30, и это не считая китайских. Многих в фильтре на маркете не было.
Вы рассматриваете фрагментацию с рыночной точки зрения, а это не совсем правильно. На рынке абсолютно всегда есть фрагментация (это — для luxury сегмента, то — для среднего потребителя, третье — массовый продукт, для мальчиков/девочек/брокеров/сельских жителей и т.д. и т.п.). И даже у ай-девайсов есть фрагментация, пусть и декларативная. А про фрагментацию Андроида говорят в свете разработки, а не рынка. «Хотите — делайте!» — хороший девиз, только он упирается в серьезное удорожание стоимости разработки. Надо делать много разного UI, надо заботиться о поддержке разных платформ. Наконец, продукт надо проверять на большом количестве платформ. Мелким разработчикам это не по плечу. Даже вложив время и деньги в доведение продукта до продажного уровня на 3х популярных телефонах и 2х планшетах, они получат шквал отрицательных отзывов и обращений в поддержку «на xxx не идет/затыкается/криво отображается». Механизмы фильтрации в Маркете работают из рук вон плохо (в т.ч. и по вине разработчиков, но факт остается фактом).
Вы неправильно прочитали фразу. Я написал не «Хотите — делайте!», а «Не хотите — не делайте!». Трудно и не по плечу? Поддерживайте только те устройства, с которыми по плечу. Остальные просто не увидят ваше приложение в Маркете.
С точки зрения продакт менеджмента фразы одинаковы и обе никуда не годятся. Либо продукт поддерживает Андроид (что указывается в спецификации/анонсе), либо не поддерживает. Потребители не знают про разные андроиды, им не объяснишь, что «ваш андроид немного не тот андроид, под который мы писали» или что «производитель вашего крутого смартфона, про крутизну которого вам прожужжали уши во время приобретения — мудак, поставивший старую версию или криво реализовавший gps/нотификации/whatever». И с Маркетом ИМХО вы излишне оптимистичны. Фильтры работают так себе, разработчиков толком никто не учит с пиететом относиться к Манифесту, сертифицирующих органов, проверяющих приложения на минимальный compliance — нет и не предвидится. Бардак полный.
С бардаком в Маркете согласен, но это песня с другой мелодией. А с остальным не согласен. Андроид никогда и не обещал стать унифицированной системой для всех и вся. Более того, производители и вендоры очень часто даже ни разу не упоминают слово андроид в своих промо-материалах. Найдите тут без поиска навскидку слово Android: www.samsung.com/global/microsite/galaxys2/html/feature.html. А теперь представьте, как это будет читаться смертным человеком, который не знал до этого, что такое Android.

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

Да ну? :) Что ж мешает самсунгам и htc зафигачить туда обычный Линукс со своим ланчнером и иконками? Вся прелесть как раз и была в том, что устройству, использующему стек Андроида, даются вкусные плюшки, главной из которых является Мир Приложений (новое любимое слово инвесторов — экосистема — помните?). Цель именно что была в унификации (в т.ч. и на аппаратном уровне: кол-во кнопок, разрешение экрана, прочие guidelines), после чего все получают на своих девайсах любимых злых птиц (тм) и довольны до ужаса.

Это очень интересный вопрос на самом деле: когда и почему начался бардак? ИМХО, Гугль просто обязана была сертифицировать приложения, без эппловского цензорского фанатизма, но хотя бы проверять compliance приложений и бить линейкой по рукам за плохие манифесты. А более всего — сертифицировать девайсы (у Майкрософта поднять WHQL и построить производителей равняться на лого взяло 10 лет и колоссальное количество ресурсов). Но время было упущено, версий самого андроида и аппаратов становилось все больше, рыться в создавшейся помойке приложений уже не было ни сил, ни возможностей.

только гики знают

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

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

Так что на вашей диаграмме надо разделить каждый сектор еще на десяток — по производителям. Плюс по версии андроида. И выглядеть это будет уже не как отсекание не-топовых устройств, а как разработка с непредсказуемым результатом. Что, несомненно, создает проблемы для разработчиков.
При первых таких отзывах запрещаете это устройство и забываете. Ну или, возможно, вы что-то недокументированное используете.
Так это и есть проблемы для разработчиков — следить за отзывами, отключать непонятные устройства… Хорошо, если получится — вон, чуть выше человек жалуется, что не может отключить какой-то самсунг. Что ему делать? А такое случается постоянно. Забавно смотреть, когда в описании программы пишут: «Теперь она работает и на ХХХ девайсе». Это тоже означает, что разработчику создали проблему. И корень проблемы — как раз та самая фрагментация.

Так что нельзя говорить, что фрагментация — не проблема. Другое дело, что есть разные способы решить эту проблему — либо напрячься и исправить программу, либо отказаться от поддержки некоторых устройств.
Если бы этого проблемного устройства никогда не было — это был бы плюс или минус для разработчика?
Плюс. Потому что прибыль от этого устройства копейки, а потери от его владельцев влупивших одну звезду могут быть вполне существенны.
Потеря от одной «одной звезды» не выше, чем потеря прибыли от одной установки.
Это не так. Во первых, это абсолютно не так для фрипремиум игр, и тут я думаю очевидно.

Во вторых, даже для premium игра это не так. Минус 1к установко это воплне себе фиксированная сумма — пускай 1к долларов. Даже 500 раз о одной звезде в течении определенного времени это смещение например с первого места в топах на третье — что выливается в потери сотни тысяч долларов.
Если вам поставили одну звезду 500 человек с какими-то редкими кривыми телефонами, доля которых 1%, то это означает, что остальные 49500 человек вам поставят 5 звезд и суммарная оценка будет 5.
На топы влияет не только средняя оценка, а еще динамика этих оценок. Если эти 500 человек поставят по одной зведе в течении часа — например потому что на их говнотелефоне вышел кривой апдейт прошивки, это сильно повлияет на место в топе, а что еще хуже это по влияет на динамику роста в топе.
Не говоря о том, что это отпугнет еще XXк пользователей которые в течении нескольких часов после этого зайдут на маркет и почитают последние отзывы.
Влепить звезду дело добровльное. Если все работает ОК то, как правило, поставил софтину и забыл. Похрену на эти рейтинги и звезды. А вот если не работает… тут можно и комменты гневные накатать и звезду влепить пониже и прочие радости обиженых хомячков.
Именно по этому если на сотню аппаратов, на которых работает приложение найдется одно, то будет 1 отзыв с 1 звездой и штук 5 с большим количеством.
Поэтому не верно так сравнивать, всегда положительные отзывы реже ставят чем отрицательные.
Для разработчика — несомненный плюс. Только дело не в наличии разных устройств самом по себе, а в том, что эти устройства каждый производитель подкручивает по-своему. Пусть будут разные устройства, но с абсолютно одинаковой системой, которая ведет себя ровно так, как предписывает документация.

Вы сваливаете в одну кучу сегментирование рынка устройств для потребителя и фрагментацию ОС для разработчика. Первое — хорошо. Второе — плохо. Теоретически, нужно бы сохранить первое и вылечить второе. Но не думаю, что это осуществимо на практике. Нужно слишком жестко давить производителей.
Первое без второго не живет. Нельзя сказать производителю «вы давайте делайте нам вот такие устройства, но чтобы они были точно такие же, как вон у того производителя». Это то, что не сразу смогла понять Майкрософт. Чтобы производителю было интересно, надо дать ему инструменты дифференциации своих продуктов от других производителей.
Кстати, хороший пример — МС. На большинстве десктопов и ноутов сейчас стоит винда. Разных моделей с разными характеристиками — миллион. Не говоря уже о самосборе. Тем не менее, проблем с разработкой под винду гораздо меньше, чем с андроидом. Большинство программ работают совершенно нормально на любом железе, а часто еще и на многих версиях винды.

Так что первое без второго прекрасно живет. Устройств навалом, ОС одна на всех.
Тем не менее, их мобильная винда этим не отличалась и не отличается. WM вело себя совершенно по-разному на разных устройствах. Я не специалист, но мне кажется, тут уже играет роль разница в архитектуре.
Сам не видел, но думается мне, что проблем для разработчиков это создавало не меньше, чем андроид.
Не меньше. Но не было способов управлять поддержкой устройств так, как это позволяет делать Андроид Маркет.
Опять возвращаемся к старому: управлять поддержкой через маркет — тоже проблема. Не всегда заранее известно, где именно оно не заработает. Не всегда можно достаточно тонко отфильтровать. В конце концов, все это занимает время, которое деньги.
Это вы позабыли времена, когда проблемы с видеокартами на винде вызывали огромные проблемы и у разработчиков игр, и у пользователей.

Ну, и повторяющийся аргумент — сейчас информационное поле резче реагирует на негатив, поэтому любые проблемы у конкретного пула пользователей ведут к общему падению продаж.
Ну, когда-то очень давно, возможно, были проблемы. Хотя, если честно, не помню, чтобы они у меня возникали.
Надо в Market такую функцию добавить, по первой жалобе автоматически отключать этот тип устройства.
С такими темпами можно всех пользователей растерять :)).
Ну а вот автоматически сообщать разработчику модель устройства и версию прошивки при написании негативного комента было бы очень кстати. К сожалению, 90% жалоб в коментах идут в топку, т.к. не содержат информации на каком устройстве имел место баг. А для многих багов это критично. Даже ответить на коммент пользователя нельзя. Немногие пользователи имеют желание и время написать в поддержку.
Фрагментация-то, возможно, есть, но сам андроид устроен так, чтобы разработчику практически не надо было о ней думать. С разрешениями экрана (hdpi и mdpi) точно так же в iOS, только там они различаются в 2 раза, а не в 1.5. Да и с версиями ОС то же самое — если хочешь обратной совместимости, вызываешь метод через подобие reflection в ObjC.

Не понимаю и, видимо, никогда не пойму, откуда вообще взялись эти разговоры о фрагментации и связанной с ней сложностью разработки.
Знаете, если у вас приложение с 10к инсталов то может и сложности нет. А если у вас 5кк инсталов, и 20% тикетов из-за одного телефона — то «сложность» разработки очень быстро начинает измеряться вполне конкретными цифрами.
Отключаете этот один телефон и забываете навсегда.
Ага, и так со всеми и пользователей уже не 5кк, а 0,5кк… Кому охоте терять пользователей и часть рынка, особенно когда они приносят доход?
плюс отключенные ставят одну звезду, и 0.5кк начинает стремиться к 0.
Не охота терять пользователей? Ну так работайте над совместимостью.
Вот по этому фрагментация скорее минус.
Она минус только для ленивого разработчика. Который мечтает однажды все сделать и успокоиться. Для ios это до поры до времени прокатывало. Т.к. как никак первый распиареный до уровня попсы смартфон. Но андроид его яростно теснит по всем фронтам и рано или поздно покроет как бык овцу. Банально за счет своей фрагментации. Когда его будут пихать не только в телефон вооот такой вот формы с такой кнопкой, во все устройства с мало мальски вменяемым экранчиком. Вот тогда то у разраба будет 100500 путей для сбыта своего приложения. И он сам будет определеять где оно поедет, а где нет. На рс же никто не возмущается что кризис не идет на офисной машине, хотя система та же самая.
Без фрагментации было бы не 5кк пользователей, а 0.5к. Об этом и статья.
тут палка об двух концах. без фрагментации не пользовалась бы такой популярностью система, но если не поддерживать фрагментацию, то приложение не будет пользоваться популярностью.
Не забывайте — этому аргументу всего несколько месяцев. И уверенная работа фильтров сейчас оспаривается многими разработчиками на собственных примерах, вы же видите.

Еще весной никакой возможности предлагать различный контент под единой маркой не предлагалось. И в сторе плодились XXX for G1, XXX HD, XXX пкоии одного и jnu еж приложения, оптимизированные хотя бы по размеру экрана.

В этом смысле рынок никак не отличался от рынка устройств j2me — за тем исключением, что на j2me eCommerce платформы давно позволяли отдавать пользователю контент конкретно под его телефон.
Инсталов сотни тысяч, сложности нет. В самых первых версиях были глюки на бюджетных LG из-за андроида 1.6, и они были пофикшены, наверное, за час, если не быстрее.
Либо у вас гиковское приложение, либо оно очень простое — я имею ввиду не сложность разработки, а хотя бы например тупо объем приложения.

Последние апдейты маркета топовым играм принесли сотни тысяч тикетов — это вполне себе конкретные деньги, не соизмеримые даже с тысячами часов отдельного разработчика.
НЛО прилетело и опубликовало эту надпись здесь
Причём здесь оборот? Статья о разработке. Не о продвижении. Не о продаже. Не о доходах.
А разрабатываем мы что ради фана только? Иногда знаете и кушать хочется.

И когда смартфоны ценой 8к рублей тебе генерят 80% проблем (самый простой пример 80% негативных оценок), и 2% дохода — хочеться их отрубить нафиг. Ай нет, нет такого способа.
НЛО прилетело и опубликовало эту надпись здесь
Причем тут айфон? То, что приложения для айфона денег приносят больше — это бесспорно. Смысл статьи в том, что если бы айфон был фрагментирован, то приносил бы он еще больше.
НЛО прилетело и опубликовало эту надпись здесь
Выкинуть можно что угодно при определенном желании, и если есть потребность влезть на какой-то сегмент рынка.
НЛО прилетело и опубликовало эту надпись здесь
Я думаю, что если разработчик может решать это самостоятельно — то это плюс, а не минус.
НЛО прилетело и опубликовало эту надпись здесь
Приложения под iPhone и стоят дороже чем под Android.
под Андороид большинство приложений бесплатны, а если не бесплатн то большая часть платных стоит 1-2$ что совсем не дорого.
У меня вот аппарат за 8990 (хотя ща он 6990 стоит), но приложения покупаю и буду дальше покупать.
НЛО прилетело и опубликовало эту надпись здесь
Не спорю что везде есть исключения, но говорить что НИКТО не будет покупать приложения из тех, у кого телефон не дороже 8к тоже глупо.
НЛО прилетело и опубликовало эту надпись здесь
Все верно, так что под них тоже стоит делать приложения, раз приносят прибыль =)
Да, что фрагментация это хорошо, со стороны пользователя это согласен, всегда хорошо, когда есть выбор.
Но для разработчика это все равно минус.
По сравнению с тем же iPhone — создал одно приложение для одного аппарата и он займет весь рынок этих устройств. на Android же надо чуть ли не под каждого производителя (аппарат) подстраиваться. Это большой гемор в разработке.
Большинство пользователей конечно же этого не замечают, и Ваш пост скорее с точки зрения пользователя написан.
Приведу простой пример:
Писал простой виджет отображающий температуру батареи. Андроид выдает температуру в цельсиях умноженную на 10 (например 366 это 36.6 градусов цельсия), для виджета я поделил полученный результат на 10 и вывел. на моём аппарате и на эмуляторе все верно. Поставил виджет друг, а у него уже не 36 отображается, а 3, значит надо делать выборку аппаратов/производителей и смотреть как выдает показания тот или иной аппарат/производитель и выводить верное значение…
А вы относитесь к этому как к комплименту -подавляющее большинство айфонщиков интерфейс рисуют напрямую задавая координаты. А мы должны верстать «резину». Если вдруг apple задумают сменить пропорции экрана айфонщики же застрелятся все)

я конечно же не хочу никого обидеть
Пусть тоже верстают «резину», в чем беда?)
Когда они разрабатывают, наверно задумываются об этом.
Ну вы прикиньте, новый айфон с другим соотношением и половина программ из аппстора на нем выглядят криво.
Вполне реальная ситуация. но пока Apple не сменят разрешение экрана, такого не произойдет.
НЛО прилетело и опубликовало эту надпись здесь
Ну я ж не говорю что все, но много.
НЛО прилетело и опубликовало эту надпись здесь
И цвета, кажется, тоже. Серый, например, будет 0.5,0.5,0.5, оранжевый — 1.0,0.5,0.0

В андроиде же все координаты и размеры можно задавать в dip, оно само растянется под плотность экрана на конкретном устройстве.
AbsoluteLayout вообщето теперь deprecated.
RelativeLayout — нет.

Ну с deprecated методами/классами там вообще непонятная ситуация — куча всего deprecated since API level 11, при том, что не-deprecated решение работает только на 3.0 и выше, а 1.6 тоже надо как-то поддерживать.
9-patch тоже растянется, но это отнюдь не гарантирует того, что приложение будет выглядеть красиво
Вы в приложениях позицию элемента указываете точными координатами или отступами от краев экрана?

Если мне на андроиде надо две картинки друг за другом по вертикали и кнопочку к нижнему краю экрана, то я сделаю в самом простом варианте relativelayout, а в более сложном (для мелких экранов) еще туда и scrollview пихну, а айфонщик просто координаты каждого элемента пропишет и все.
Хорошая статья, подробно объясняет всё про фрагментацию и минусы для программистов.
Вот только эффект от неё прямо противоположный тому, которого хотел добиться автор — из статьи хорошо видно, что фрагментация — это недостаток для программиста.
Но ведь программист пишет программу не чисто поприколу для себя, а для пользователей. Для того самого сегмента рынка на который указывают эти диаграммы.
Возможно, для вырезанного сегмента круга нужны совсем другие программы.

Как на рынке телефонов BADA — часть пользователей никогда не сможет запустить программы, использующие все возможности BADA, просто в силу ограниченности железа. И они буду скачивать совместимый с телефоном j2me контент. В этом ничего нет плохого, в конечном счете, только это рынок для других разработчиков.
Поддерживаю. Больно много развелось программистов, которые думают, как жадные, но ленивые бизнесмены, или работают на них — хотят один раз написать софт, а потом рубить с него бабло всю жизнь. Конечно, им влом писать под разные платформы, разные девайсы и т.п. А пользователю что, быть привязанным к одной платформе и двум-трём видам устройств? Нет уж, коллеги, давайте-ка уважать пользователей и не ныть про фрагментацию, ибо мы тоже пользователи чего-то (:
И еще, почему фрагментация зло.
Фрагментация с точки зрения разработчика (а это не сколько программист, а сколько скорее продавец товара) это безусловное зло — ибо у тебя нет возможности завявить — мое приложение работает на платформе android.
Потому что всегда найдется такой уродофон — на котором оно не будет работать стабильно.

Как раньше на сайтах писали — наше j2me приложение поддерживает следующие устойства — и далее список из 600 устройств.

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

Это не минус. Это особенность.

Между прочим, очень немногие из обычных смертных знают, что их прикольный смартфон — это на самом деле Андроид.
Мне кажется наоборот Android и iPhone многие знают, а вот другие нет.
Лично знаю человека, который не знал что у него Symbian, а таких, которые не знают что у них Android не встречал.
Так как на Андроиде даже при первом запуске говорится что это Андроид да и так много где указанно это. везде зеленый робот.
А вы от HTC что-нибудь гляньте.
Ну HTC возможно да. но далеко не все Андроиды выпускает HTC. Много других производителей.
У HTC треть рынка. Samsung вроде тоже везде нивелирует слово Android.
Ну да, но не 100% все же.
Абсолютно не согласен! Конечно вы можете заявить это в Android есть категория permission и требований (GPS, OpenGL, Audio, TouchScreen,SDCard editing) и есть API покрывающий все это! Если ваше приложение использует что-то за пределами API его проблемы.

В конце концов есть эталон — emulator! Сколько сталкивался с проблемой фрагментации: так это экран и конфигурации (отсутствие кнопок, подсистем и т.п.) и большинство из проблем не создавало блокеров для пользователя, в основном неудобство. И не стоит сравнивать с J2ME там большинство API было не стандартизировано.

Ну а если вы говорите о premium игры, то простите :) на PC такая фрагментация с самого начало существует, купил игру, а она не пошла, пошел докупать железо :)

Мне кажется проблемы фрагментации в комментариях мешаются в кучу (экран, конфигурация, кто-то использует hardware acceleration и с этим проблемы ...)

Уважаемый автор, я с вашим мнением согласен, но есть одно но!
Вот допустим есть приложение, в котором очень хочется сделать классный дизайн, чтоб он смотрелся как влитой на текущей системе. Допустим надо сделать кнопку сброса — пришла в голову рисовать ее красным цветом. Ок, выдераем из сорцов андроида pre 2.3, post 2.3 и honeycomb кнопочки и делаем их красными. Собрали apk, поставили на девайсы — на нексусах и ксумах все ок, на htc с их богомерзким sense они уже так не выглядят. Вот фрагментация — когда вендоры начинаю менять что-то, заниматься улучшайзингом и кастомайзингом.
Как-то щупал я китайский планшет на 2-й ветке системы. То что дизайн скопирован с айпада это тема для отдельного разговора, но из этого выливается что он имеет только одну кнопку — домой, а назад и меню вынесены на status-bar. И как спрашивается мне вызывать меню приложения, если оно фуллскрин?
Просто используйте графические фильтры для окраски стандартной системной кнопки.

Китайские планшеты — это вообще очень интересная тема. Собственно, их и надо блокировать в первую очередь :)
во-первых она не в паблике, но это на самом деле то не проблема
во-вторых — а как же тени, блики и прочие вещи, которые просто так наложением фильтра не окрасить.
Фильтр tint окрашивает, а не просто заливает цветом. Попробуйте, красиво выходит, я сам проверял.
Тема фрагментации болезненна для всех разработчиков Android. Но это проблема, которую все ждали! И надеялись что Google изначально сделает удобные инструменты для борьбы с ней!

Здесь есть одна большая разница между Iphone и Android: Iphone — телефон от Apple, которые многие хотят купить, а Android — ОС (как ни странно), которую многие восприняли как луч света в мобильных технологиях (open source как никак) и которая аналог Linux на mobile. IPhone покупают как телефон, а в Android идут разработчики, которым нравится кастомизируемость, открытость ОС, и которые верят, что они пишут приложение, которые будет работать на многих (!!!) устройствах сейчас и в будущем! Ну а уже за этими разработчиками, тянутся пользователи, которые постоянно ругают разработчиков за незаконченность программ.

Все-таки определенная вина Google во всем этом есть:
1. Фрагментированность в Маркете была не продумана изначально, а ведь это деньги, здесь как раз возможность сегментации очень важна!
2. Постоянно менялись настройки в самом Android (сколько раз переписывалась страница про фрагментированность :) ). Добавляли средние, большие, супербольшие экраны + суперточные, точные.
3. У пользователей (!) не было возможности выбирать настроек совместимости запуска программы! Например, у меня планшет и я хочу растянуть некоторые программы на весь экран, а некоторые нет. Или у меня Android 2.1 хочу запустить в режиме 1.5, лучше конечно наоборот, тут у Google точный провал.
4. Не сделали нормальный UI и поэтому появились все эти Sense… и обновления раз в год, а потом тишина.

Да вообще по некоторым вопросам Android Google выбирает странную позицию и получает еще больше проблем:
1. Могли бы ввести, например, платную верификацию приложения от Google. Google просматривает и ставит, приложение нормальное, не шпионит и добавлять в собственный каталог, с некоторым точным описанием. Остальные приложения пусть болтаются в свободном полете.
2. Изначально нанять дизайнеров и не игнорировать проблему фрагментации.
3. Не закрывать код Android 3.0! Теперь даже не известно откроют ли, а это существенный удар.

Большинство пользователей даже не знают что Android на базе Linux и Open Source система. В начале её развития аппараты на Андроиде как раз и покупали гики, для которых это было важно. Сейчас же ситуация изменилась, её покупают те, кто хочет хороший смартфон за умеренные деньги, или кто не хочет айФон по каким либо причинам.

На счет режима совместимости-в принципе то зачем? приложения которые идут на 1.5 вроде как все идут на 2.3, а вот в ранние версии встраивать поддержку ни ко не будет (и это не только в Андроиде так, а везде (даже тот же Windows). Ни кто не хочет поддерживать старую версию, когда есть новая и которая лучше? хочешь нового — обновляйся.
Open Source????

А где мне скачать исходники android 3.2?
А где мне скачать исходники прошивки для моей моторолы на android?

Да, пусть с оговорками, но все же open source. Дрова к железу в любом случае никто не обязан выкладывать.
Как в анекдоте: вот такой вот хреновый open source.
Оригинал Андроида Open Source, но не все части и не все версии. Что производители допиливают — это надо уже из них тянуть.
Как раз Windows и хотел вспомнить, у него есть в контекстном меню запустить в режиме совместимости… А так хочется дополнить совместимость аппаратную, ну нету предположим у устройства кнопок или тачскрина, а приложение сделано под него, ну пусть Android представит, что ли виртуальные кнопки или виртуальный тачскрин. Или маленький экран у телефона, ну пусть предоставит режим скролбара автоматически. А то, открываешь приложение, вываливается виртуальная клавиатура, закрывает вводимый текст и т.п. :)
Я согласен почти со всем, кроме замечания о дизайне. Как раз родной дизайн андроида красивый, элегантный и быстро работающий. Штуки вроде сенса — это «рюшечки» для любителей eye candy. Огромному числу пользователей, родной интерфейс андроида нравится гораздо больше скинов. Кстати, цель их не исправить якобы «плохой» интерфейс, а просто выделиться на фоне других производителей. Sense еще ничего (хотя я и предпочитаю без него), но большинство других оболочек производителей, сильно уступают стоковому интерфейсу андроида.
Уж кто-кто, а Джобс был совсем не дурак.
И ты пытаешься сказать, что Джобс ошибался? Нет, чувак, скорее, это ты ошибаешься.
Джобс был не дурак. Джобс продавал айфоны.
Бред, ибо Apple выпускает еще и почему-то обделенный вашим внимание iPod Touch, что есть по сути бюджетный айфончик. За счет него, ссылаясь на вашу статью, и заполняется «рот» пэкмана.
Я например именно так и делаю как Вы сказали — не верстаю под ldpi. Ну не хочу иметь дела с маленькими экранчиками ради такого процента рынка.
А вот сделать под mdpi и hdpi — не проблема. Чудесно выглядит на разных разрешениях если не использовать AbsolutLayout'ы (которые уже deprecated) и в качестве размерной единицы использовать dp или sp.
Вот и все)
Автор описывая проблему фрагментации акцентирует внимание исключительно на различиях размеров/плотности экранов. А ведь это далеко не самая большая проблема, если вообще можно назвать проблемой пару лишних сетов иконок и лейаутов. Ну да, в несколько раз больше работы для поддержки множества экранов, но это, по крайней мере, можно заранее знать и добавить необходимую поддержку.

Я считаю настоящей фрагментацией большое количество производителей и огромное разнообразие железа на рынке. Вещи которые действительно сильно отличаются о девайса к девайсу, такие как аудио раутинг или получение видео с камеры — вот оно настоящее зло. Я уже не говорю про десятки различных API для передних камер в версиях до 2.3 — у каждого производителя свой, а то и по несколько для одной модели (привет Dell Streak).

Дабы не быть голословным, приведу пару примеров (многие из которых стоили многих часов поисков в интернете).
Около четверти всех девайсов возвращает неправильный список поддерживаемых камерой видео форматов. БольшАя часть Samsung'ов не умеет правильно переключаться на спикерфон и обратно. Некоторые девайсы требуют особого AudioSource, иначе имеют жуткие шумы в аудио. Motorola Atrix не умеет играть 16 kHz. LG Revolution не реагирует на заранее выключенный спикерфон. В Galaxy Tab не приходит колбек с задней камеры.

Не смотря на то, что многие проблемы выглядят как баги прошивки, большинству из них не суждено быть пофиксиными никогда, т.к. это особенности работы конкретного девайса. И решить все эти проблемы не имея девайс в руках задача нетривиальная. А отдавать приложение на тестирование на каждом девайсе (и уж тем более покупать их) стоит кучу денег и не всем по силам. И даже если есть возможность протестировать приложение на многих девайсах, код превращается в спагетти из switсh'ев и if'ов для имплементации особенности работы того либо иного девайса.

В общем, грустно мне, как разработчику, от этого обилия на рынке. Хорошо хоть фильтр в маркете появился и можно заблокировать конкретный девайс, но это, конечно уже на крайний случай.
Автор описывая проблему фрагментации акцентирует внимание исключительно на различиях размеров/плотности экранов. А ведь это далеко не самая большая проблема
Автор тем самым упростил проблему. Я бы сказал, это самая незначительная проблема, которая может быть решена даже без наличия специфичного девайса. К описанным вами проблемам я бы еще добавил новые версии прошивок, когда у многократно проверенного устройства вдруг выясняется, что приложение перестало запускаться или глючит после обновления самой прошивки. Блокировать девайсы или тестирвать на всем, что есть, не выход. Зная позицию Гугл я вообще не вижу решения.
Да, кривые апдейты тоже добавляют головную боль. Такая же ситуация с кастомными прошивками.
Блокировать девайсы или тестирвать на всем, что есть, не выход.

Именно блокировка девайсов и есть самый правильный выход. Это очень хороший вариант, и все ваши проблемы от того, что вы его боитесь. Вы же не боитесь исключать, например, Windows Mobile 6.0 из списка поддерживаемых платформ? Она вам просто не нужна, и вы ее исключаете. Пусть вас не пугает, что на телефонах, которые не соответствуют вашим ожиданиям, написано «Андроид». Просто исключайте их, как WM6.
а вот не факт ;)
есть такие программы, ради которых некоторые ставят кастом прошивки, чтобы они работали. и это не голословно — я вижу это по статистике одной из своих программ, а выяснилось это по отзывам, где пользователи делились советами.
ну значит они сами себе злобные буратино, это уже исключительные случаи
На картинках разрешение экрана я привел только для примера, как самый простой вариант фрагментации.

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


и свой коммент выше:
Карт-бланш производителю необходим для того, чтобы устройства были в принципе. Нельзя сказать производителю «вы давайте делайте нам вот такие устройства, но чтобы они были точно такие же, как вон у того производителя». Это то, что не сразу смогла понять Майкрософт. Чтобы производителю было интересно, надо дать ему инструменты дифференциации своих продуктов от других производителей.
Тут в основном говорят о вреде фрагментации для разработчиков. Но есть еще и ощутимый вред для пользователей.
Потенциальный покупатель андройда не может быть уверен, что крутая программа, которую он увидел в рекламе, скринкасте или у друга, и которой он хотел бы воспользоваться заработает на конкретном устройстве. Как покупателю выбрать аппарат?
И еще есть большая имиджевая проблема для платформы. Человек установил программу из маркета, может даже деньги заплатил, а она отказалась работать или глючит. И что будет чувствовать такой покупатель? А что он будет чувствовать когда после жалобы его устройство просто выкинут из списка поддерживаемых устройств, как здесь некоторые советуют?
Мне кажется Андройд все больше превращается в Windows Mobile 2.0. Выглядит вроде как iPhone, но в работе оказывается как старый WinMobile. То есть конструктор для производителей железа, с очень слабым контролем со стороны разработчика платформы.
«Покупают андроиды» только гики. Пользователи покупают прикольные смартфоны и даже не знают, что там внутри андроид.
хоите сказать, что пользователь, не гик не может знать что он покупает Андроид? Да, в большинстве случаев так, но не всегда.
Да и только вчера был в Связном, там целая стена вся в рекламе Андроида, в его стиле и различные аппараты представлены. Явно пользователь заметит, что это Андроид.
Не «не может знать», а «может не знать», и очень часто не знает. Этому очень сильно и осознанно способствуют производители. HTC и Samsung намеренно не подчеркивают, что их аппараты работают на андроиде, а подчеркивают свою аутентичность (и это, безусловно, правильно). Например www.samsung.com/global/microsite/galaxys2/html/feature.html
Видел ссылку, и знаю что так и есть. Но если разобрать частный случай, который описан выше — стену в магазине, то там и Samsung и HTC аппараты имеются.
Это какая-то самодеятельность Связного. Не думаю, что это сильно глобальное явление. В плане маркетинга и продакт-плейсмента — это полнейшая глупость.
www.youhtc.ru/2011/03/android-shop-in-shop-ot-gk-svyaznoj/ вот кстати пример, и таких довольно много.
Даже год назад было так, как вы говорите, но сейчас время изменилось, и уже гораздо больше знают, что у них Андроид.
Похоже, им Гугл приплачивает, иначе у меня объяснений нет :)

В любом случае, сейчас на ответ «у тебя какой телефон?» отвечают «Самсунг», а не «Андроид». И именно слово «Самсунг» служит противовесом слову «Айфон». Самсунг продает свои телефоны, HTC продает свои, Моторола свои, Эппл свои. Это четыре разных экосистемы, если хотите, просто первые три объединены одной технологической основой, но их Маркет может быть в каких-то случаях совершенно разным, и он будет таковым, когда разработчики наконец-то перестанут бояться блокировать устройства. И это нормально. Маркет должен агрегировать, а не унифицировать.
Ну под словом телефон и имеется ввиду аппарат, а не система.Если спросить какая система, то скорее ответят Андроид нежели Samsung или HTC.
Большинство ответят «чо?». И эта тенденция будет (обязана) усиливаться со временем. Не нужно, чтобы пользовательскую базу составляли одни гики.
Совсем не обязана, но возможна.
Не только гики знают что у них Андроид!
Ну такому пользователю, получается и магазин приложений не нужен. Тогда такой пользователь вообще выпадает из темы дискуссии, разве не так? Здесь же описывается фрагментация с точки зрения производства и распространения программ. То есть людей, которые покупают прикольные смартфоны в этом контексте можно не считать.
Почему, ярлычок «Маркет» у него на экране ведь есть. Только даже внутри этого ярлычка нет слова «Андроид». Маркет себе и маркет. И если он там просто не видит какое-то приложение, то он о нем с большой долей вероятности и не узнает. А если и узнает, то не беда — «ну, для моего самсунга видимо этой игры нет».

Все мучения андроид-разработчиков от того, что они сами знают про единообразие платформы, и свое знание перекладывают на пользователей, а это неверно. С пользователями надо говорить в терминах телефонов, а не в терминах платформы.
Ага, и выложить в маркет не
Прогамма под Андроид, а программа под Самсунг, под ХТС, сони эрикссон и тд?
Я про восприятие пользователем своего значка «Маркет». Выкладываете вы, естественно, одну программу, просто определяете круг устройств, с которыми хотите работать.
Просто многие мультиплатформенные программы указывают в маркете в названии «for Andrloid»
Первый вид сегментации ожидаем и почти все проблемы решаемы.
А вот второй — это то, что не решится в обозримом будущем. И именно это основная проблема.
1) Количество ошибок в системе не исправляемых годами — огромно (зайдите для интереса на багтрекер).
Гугл тупо не справляется, а инода просто игнорирует проблемы.
Если вы реально не пишите софт, то вы просто не в курсе, о том, что лежит за красивой оберткой.
2) Выходящие обновления системы игнорируются производителями
3) Производители лепят свою кастомизацию, используя маскимально дешевых программистов из азии —
к чему это приводит, думаю понятно.
4) И наконец просто кривые драйвера к железу — тут основная боль у разработчиков сложного софта и игр.

«Обязательные» 18 месяцев обновлений практически не влияют на сложившийся рынок.
Производители выпускают 1-2 минорных обновления на выходе, затем тянут больше года и выпускают либо еще одно минорное обновление, либо одно мажорное, но такого качества, что лучше бы вообще не выпускали.

Выкаченная второпях 3.x ветка — только добавила проблем. Глобально ее не заменят на 4.x в ближайший год на всех железках, так что головной боли скоро станет в 3 раза больше.

p.s. во времена j2me были похожие проблемы — криворукие поделия производителей породили целую индустрию по тестированию приложений и портированию на определенные устройства (тогда в основном это были только игры).
Реклама скайпа для Android, четко дает понять о проблеме фрагментации, в каждом релизе: «Мы поддерживаем теперь еще N новых телефонов».
У нас на работе, куплено более 15 разных моделей андроидфонов, и все чтобы проверить, будут ли работать наши приложения. И пара айфонов — это говорит о многом ;)
И не смотря на все заявления, тот же Скайп отвратительно работает в большинстве случаев.
Скайп — не просто прикладное приложение. Они используют много недокументированных вещей, поэтому очевидно, что всплывают громадные проблемы с совместимостью.
Немалое количество разработчиков разрабатывают под Android потому, что он им нравится с точки зрения пользователя + низкий порог входа в разработку — в AppStore попасть заметно сложнее и дороже, чем в Market.
Однако они втыкаются в 2 проблемы, которые в немалой степени преодолеваются на голом энтузиазме:
1) Малая прибыльность.
2) Высокие затраты на разработку из-за фрагментации.

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

Проблема фрагментации, как говорилось, состоит из двух факторов. Один «официальный» — разные версии системы и разные форм-факторы устройств — это предсказуемо и решаемо заранее, плюс тестируемо в эмуляторе. Второй — «неофициальный» — это всевозможные глюки, проистекающие из кастомизации производителей и их кривизны. И даже исключение определенного устройства из маркета — это не очень то хороший вариант.
Приведу свой пример. Мое приложение использует датчик освещенности. По документации, датчик должен выдавать значение в люксах, т.е. не абстрактное значение. Почти все устройства HTC выдают 10 фиксированных значений в диапазоне от 0 до 10000, устройства Meizu выдают значения от 0 до 65к непрерывно, с шагом в 1, но это не страшно — это соответствует документации. А вот у Motorola значения от 0 до 40, и реальной освещенности они, как видно, не соответствуют. Более того, у некоторых моделей HTC Desire диапазон значений тоже другой — от 0 до 127. Пришлось ввести калибровку на максимальное значение освещенности. Это уже не Just Works, но что поделать. К счастью, это проявляется на явном меньшинстве аппаратов.

Выше говорилось, мол, если не дать производителям возможность кастомизации, то они не будут заинтересованы в производстве. Пример WP7 явно показывает обратное. Имхо, Google должен бы разделить систему на следующие модули:
1) Ядро системы. То, что именно Linux, а не Android, железозависимая часть. Пишется производителем.
2) Система Android. То, что существует внутри Dalvik. Пишется Гуглом, универсально, обновляется Гуглом.
3) Google & Vendor UX. Набор приложений Google и равноправные им приложения от вендоров. Обновляется как обычное приложение.
4) Пользовательские приложения — здесь все остается как было.
Модули должны обновляться независимо. Например, модуль 2 можно обновить независимо от 1, он возможно не получит некоторых фишек при этом, но в целом пользователь получит новую систему. Таким образом, производителю нужно обновлять только 1) и частично 3), часть 2) обновляется одновременно с выпуском от Google.

Совместно с этим нужна сертификация аппаратов, производимая Google. Чтобы получить набор приложений от Google, ПО вендора должно соответствовать документации( т.е., из примера выше, сенсор должен возвращать не абстрактные значения, а именно люксы). Вендорам запрещено вносить любые изменения в собственно Android (как сейчас вносит, например HTC со своим Sense — там огромное количество изменений, он от AOSP отличается больше чем MIUI, по ощущениям), но они могут использовать темы оформления и писать свое ПО, а также делать его включенным по умолчанию, но они не могут полностью удалять стандартные программы. Т.е. например, включаем HTC, там Sense, но этот Sense — просто лончер и просто набор программ. Зайдя в настройки, можно переключиться на стандартные программы Android.
В целом, ключевой момент — соответствие спецификациям и документации, отсутствие отсебятины в поведении системы с точки зрения программиста.

Пример WP7 показывает, что так сделать можно. С огромной армией расплодившихся устройств так будет сделать сложно. Но я не думаю что это невозможно. Скорее Google не хочет/не задумывается/считает иначе.
>И даже исключение определенного устройства из маркета — это не очень то хороший вариант.

Это очень хороший вариант, и все ваши проблемы от того, что вы его боитесь. Вы же не считаете нехорошим вариантом исключать, например, Windows Mobile 6.0? Он вам просто не нужен, и вы его исключаете. Пусть вас не пугает, что на телефонах, которые не соответствуют вашим ожиданиям, написано «Андроид». Просто исключайте их, как WM6.
Это только маркет, а еще приложения распространяются на различных сайтах apk файлами, и даже в сторонних маркетах так же, а там уже отключить не получится.
выкинув какой-нибудь там Galaxy S2 (из-за особенностей Mali400, например) мы не только получим минус 10-15-20% продаж, но и шквал писем в поддержку «куда делось приложение!!!»
Вот только если девайс составляет 20% от всей аудитории, а проблема только у какой-то одной ревизии — это как раз не катит.
Пример WP7 показывает, что так сделать можно

Пример WP7 как раз показывает, что так делать не нужно.
image
WP7 непопулярен сам по себе. Тем не менее, он показывает, что производителей можно заставить выпускать аппараты не то что без левой отсебятины, а вообще одинаковые.
Как раз то, что производителей заставляют это делать и определяет причины его «непопулярности самого по себе».
Спорный вопрос. Тут надо пользователей опрашивать. Так то устройств много, они не дороги, продаются везде.
Да, возможно если бы производителям дали изменить внешний вид, ОС стала бы популярнее. Вот только лучше пусть это сделает Майкрософт. Иначе будет такой же разброд и шатания.
Это не спорный вопрос, это официально заявляют вендоры. Они не горят желанием самостоятельно вкладываться в маркетинг, бенефициаром которого будет выступать Майкрософт. По сути, не имея возможностей дифференциации, они лишаются инструментов рекламировать «HTC experience», поэтому могут рекламировать исключительно железку, которые по сути везде одинаковые. Да и на рынке мобильных девайсов в железках очень мало профита, так уж сложилось.

Отсюда (так как производители не вкладываются в маркетинг этих устройств) и низкое количество пользователей.

То есть ограничивая производителей, Майкрософт автоматически принимает на себя исключительную роль по продвижению самой платформы и устройств на ней. В случае с МС это еще худо-бедно работает за счет их гигантского ресурса, а Гугл не хотел идти по этому пути, и вполне понятно почему.
С одной стороны, сейчас как раз Андроид достаточно узнаваем и продвинут в массы.
С другой, и я не предлагал полностью запрещать твики от производителей телефонов, я за то, чтобы они следовали спецификациям и не противоречили документации, плюс не вносили бы такие изменения в систему, чтобы эти изменения не давали возможности быстро обновить версию Андроида, ну и плюс чтобы у пользователя всегда была возможность вернуться к «ванильному» Андроиду.
Если андроид можно будет быстро обновить без танцев с бубном и опасности брика, то нафига мне новый девайс?
Ради нового железа. Айфоны же люди обновляют. Хоть и обычно раз в 2 года.
Плюс, такое модульное обновление не обновляет все на 100%. Драйвера устройств, сама Dalvik VM остается старой, и их обновление зависит именно от производителя.
artch, к сожалению вы упускаете самый важный момент. Проблема с фрагментацией — она не только с разрешением экрана. Топовый HTC и топовый Samsung сильно отличаются. Не должны. Но отличаются. Гугль только сейчас обязал производтелей выпускать апдейты раз в 18 месяцев. Но это еще как пойдет. Возьмем родные гуглефоны — G1, Nexus one и Nexus S. Так вот, сам G1 уже с 1.6. не апдейтился. Это телефон самого Гугля. Некоторый софт работает на Nexus One, но не работает на S. И наоборот. В результате получается что вашего Пакмана надо еще нашинковать на одна камера или две камеры. Есть вспышка или нет вспышки. Есть физические кнопки или нет кнопок. Моноблок или раскладушка. Как результат — разработка и поддержка сравнимой аудитории на андроидах куда дороже чем на айфонах. Потому как все вышеприведенные вещи приходиться учитывать.
В этом плане интересен и переход на планшеты. Моторолла Хoom моя, выпущенная Мотороллой в обнимку с Гуглем, не тянет 2/3 софта стоящего на моем же Nexus One выпущенного гуглем в обнимку c HTC. А на моем айпаде идет абсолютно все, что идет на айфоне.

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

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

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

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


и коммент выше:
Карт-бланш производителя необходим для того, чтобы устройства в принципе. Нельзя сказать производителю «вы давайте делайте нам вот такие устройства, но чтобы они были точно такие же, как вон у того производителя». Это то, что не сразу смогла понять Майкрософт. Чтобы производителю было интересно, надо дать ему инструменты дифференциации своих продуктов от других производителей.
Как уже многие написали, автор статьи непонимает всей глубиныфрагментации. От себя добавлю, что даже без работы с железом приложение может работать на одних устройствах и не работать на других. Каждое усторйство, как правило, имеет несколько официальных прошивок (иногда десяток) и несколько «неофициальных». И часто эти прошивки делают достаточно криворукие разработчики, способные испортить даже базовую функциональность.
Автор уже два года пишет под Андроид и отлично понимает глубину фрагментации.
И сколько процентов аппаратов поддерживают ваши приложения, наверно все, на которых есть хоть какое-то отличие от документации Андроида отбраковываете? А это довольно большой процент.
Это совсем небольшой процент, если не писать системное ПО.
а покажите, пожалуйста, ваши приложения
Диаграммы занятные, а может их еще и отрисовать в честном абсолютном масштабе? ну чтобы было видно насколько 320х480 принадлежащая Iphone, больше или меньше такой же доли этого разрешения в Android'е.
Чтобы люди понимали что нельзя сравнивать 2 диаграммы только в процентном соотношении, забывая абсолютные показатели устройств и показатели платящих пользователей…
Я немного не в теме мобильной разработки. Возможно, дурацкий вопрос задам. А не существует ли в природе какого-то middleware, скрывающего детали реализации конкретных моделей? Если нет, то, по-моему, это золотая жила.
Основная проблема как раз в тонкостях самих телефонов. Например, у кого-то чипсет тегры, а в Android не задействуется вся мощь тегры, приходится брать нативные инструменты NDK и писать под них. Никакой middleware не закроет проблемы экраны, если вы заранее с layout не позаботились. В-третьих есть у вас стандартные иконки, а на большем экране растянулись некрасиво, ну никто за вас не нарисует :)…
Этим вообще-то должна заниматься система. Android именно для этого и делали.
А лепить еще одну прослойку — это множить тормоза и ошибки. Сомневаюсь что кто-то будет закупать весь выпускаемый зоопарк телефонов для написания и поддержки такого middleware (учитывая что производители многое будут ломать в обновлениях прошивки).
Вся надежда на то, что в будущем пупулярных моделей/производителей останется не так много.
И именно под них и будет писаться и тестироваться весь софт в первую очередь.
автор, видимо, не является разработчиком под айфон. ибо в Xcode все пишется под 320 на 480. Только художник должен помнить размеры пикселей, чтобы картинка не стала убогой на ретине.

так что колобок на первой картинке для iPhone разработчика чисто желтый.
Мне кажется автор статьи совсем не понимает о какой фрагментации идет речь, когда она собственно о ней идет. Мало кто жалуется на наличие разных размеров экранов и процессоров разной мощности (тем более что система предоставляет отличные возможности для асбтрагирования как от первого так и от второго).

Когда говорят о фрагментации говорят о следующих вещах:
1. Разные версии ОС. Ведь ничего по сути не мешает обновить даже самый lo-end девайс до последней (по крайней мере последней минорной) версии ОС.
2. Различия которые вносят в ОС производители и которые нигде не специфицированы. И речь не о разном UI — он не мешает делать приложения для девайсов всех производителей. Речь о такой, например, вещи как максимальный размер памяти который может занимать единичный обьект. Есть какието логические обоснования чтоб этот размер был разным на разных девайсах?
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.