Как бороться с низкокачественными Android приложениями

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

Но каждый день выходят новые приложения с дизайном из iOS, темами из 2.3, не адаптированные для планшетов и с размытыми картинками на HD-экранах. И в этом виноват не Google, а разработчики. Кто-то не пытается спорить, когда заказчик присылает макеты от iOS версии, кто-то пытается, но сдается. Кто-то разрабатывает приложение ради опыта, откладывая «неважное» на потом, и так оно и остается. Стартапы делают приложения «за день», а потом лихорадочно фиксят баги, создавая снежный ком, который уже никто не перепишет с нуля. Крупные социальные сети, имея деньги и время, каким-то образом умудряются выпускать ужасные клиенты…

Вариантов очень много, и во многих из них нельзя ничего исправить или вообще сделать изначально правильно. Но если хотя-бы один разработчик из десяти, при возможности, уделить внимание мелочам, описанным ниже — 10% от новых приложений станут удобнее для пользователя.

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

Пожалуйста, используйте Holo


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



А ведь сделать так, чтобы в каждой системе отображалась своя тема — совсем не сложно. Достаточно лишь организовать базовую тему, от которой будет наследоваться тема приложения и переопределить ее для v11+ (3.0 и выше).

/res/values/styles.xml (или themes.xml):

<resources>
    <style name="BaseTheme" parent="@android:style/Theme">
        <!-- Костыли и фичи для версий ниже 3.0 писать здесь -->
    </style>
    <style name="MyTheme" parent="BaseTheme">
        <!-- Общие костыли и фичи для все версий -->
    </style>
</resources>


/res/values-v11/styles.xml (или themes.xml):

<resources>
    <style name="BaseTheme" parent="@android:style/Theme.Holo">
        <!-- Костыли и фичи для версий от 3.0 и выше писать здесь -->
    </style>
</resources>


/AndroidManifest.xml:

<!-- [...] -->
    <application android:name="MyApplication"
            android:label="@string/application_label"
            android:icon="@drawable/app_icon"
            android:hardwareAccelerated="true"
            android:theme="@style/MyTheme">
<!-- [...] -->


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

Пожалуйста, используйте ActionBarSherlock


Многие думают, что паттерн Action Bar — это всего лишь заголовок окна с иконками и даже не читали официальной документации.

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

ActionBarSherlock использует родной Action Bar для ICS и выше, и портирует весь функционал для версий не поддерживающих его, или поддерживающих частично. Демо всех возможностей находится здесь.



Начать использовать его очень просто:
  • Добавить проект как библиотеку к своему приложению
  • Подправить темы для старых версий API, чтобы использовали Theme.Sherlock.xxx как базовую
  • Унаследовать Activity от SherlockActivity или SherlockFragmentActivity
  • И можно общаться с Action Bar через getSupportActionBar()


Пожалуйста, используйте фрагменты


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

Даже если времени на переписывание через FragmentManager нет, или это крайне сложно в существующей архитектуре — можно вынести код из Activity во фрагменты и организовать простейшую поддержку планшетов.

Например у вас есть уже реализованное приложение с двумя окнами — список и детальный просмотр.

  • Выносим код в два фрагмента
  • Вставляем эти фрагменты в Activity через разметку:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
        
        <fragment
            android:id="@+id/SomeFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            class="com.example.SomeFragment"/>
    		
    </LinearLayout>
    
    


  • Создаем специальную разметку для экранов, например длинной больше 800dp:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal" >
        
            <fragment
                android:id="@+id/listFragment"
                android:layout_width="400dp"
                android:layout_height="fill_parent"
                class="com.example.ListFragment" />
    
            <View
                android:layout_width="10dp"
                android:layout_height="fill_parent"
                android:background="@color/FragmentDivider" >
            </View>
    
            <fragment
                android:id="@+id/detailsFragment"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                class="com.example.DetailsFragment"/>
    		
    </LinearLayout>
    
    

  • При нажатии на элемент списка проверяем — есть ли второй фрагмент. Если есть — обновляем его содержимое, если нет — значит мы на маленьком экране и нужно стартовать активити.

    ...
    if (getActivity().findViewById(R.id.listsFragment) != null) {
       //меняем содержимое фрагмента
       ListFragment fragment = (ListFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.listsFragment);
       fragment.setDetails(...);
    } else {
       //запускаем активити
       ...
    }
    ...
    



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



Пожалуйста, старайтесь использовать xml и nine-patch для графики


Очень часто встречаются приложения, в которых даже простейший градиент реализован с помощью растянутого png. И когда такой графики на экране много — причины тормозов начинают искать в логике приложения.
Даже если очередной дизайнер прислал очередной растровый макет из Фотошопа, сделанный по гайдлайнам iOS — перед тем, как порезать это все в картинки, подумайте о каждом элементе:

  • Можно ли реализовать это с помощью простых примитивов, заливок, градиентов и скругленных углов в XML?
  • Можно ли реализовать это с помощью Nine Patch?

Отличный редактор Nine Patch находится здесь — http://habrahabr.ru/company/alee/blog/136667/. И не стоит забывать, что создание графических ресурсов для xhdpi, hdpi, mdpi также относится и к nine-patch. Не стоит перекладывать эту работу на девайс пользователя.

Заключение


Кто-то скажет, что это все не обязательно, ведь среднестатистический пользователь не знает где новый, а где устаревший интерфейс, и большинство не знают, где заканчивается TouchWiz и начинается Android… Но если делать все как-попало потому, что Google не запрещает, а заказчик не разбирается — Google Play будет продолжать наполняться низкокачественными приложениями, о чем будут продолжать писать «аналитики». И как итог — разработка под Android менее выгодна, чем под iOS.
Конечно, я все упрощаю и сгущаю краски — но хочется вселить некую ответственность в разработчиков.
Share post

Comments 125

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

    Как бороться с низкокачественными приложениями — нужно сотрудничать с дизайнерами. На всех этапах разработки. Все вышеперечисленное в посте, на мой взгляд — не решение, а средство. Нам, пользователям, все равно как это сделано, если все удобно, красиво, понятно, и работает как нужно.
      +19
      Полностью согласен и не понимаю за что минусуют. Видать вы попались под горячую руку описанных вами программистов )
      +8
      Кто виноват в том, что приложения под Android в большинстве своем выглядят как ночной кошмар?
      В первую очередь это вина Google, который до 4.х даже не задумывался о guidelines, во вторую очередь это вина Google, которые не составили нормы принятия в Market (Play).
      Еще стоит отметить поведение заказчиков, которые просто обожают использовать дизайн от iOS приложения для Android и в большинстве своем не желают слышать о поддержке планшетов.

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

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

      Радует одно, что с приходом гайдлайна и Holo возможно создавать как минимум не уродские приложения (ИМХО sports.ru у меня получился не самым страшным приложением на момент выпуска).

      Так кто же виноват? Однозначно Google, это при его попустительстве мы имеем то, что имеем, но постепенно ситуация исправляется, программа от Roman Nurik — Android Design in Action тому свидетель.
      Часть вины лежит на тех, кто заказывает приложения и согласен с результатом: «Это же Android и так пойдет».
      Вина же конечных разработчиков только в том, что у них может не быть чувства вкуса, так я и в AppStore могу найти такие же приложения.
        0
        Какой крутой подкаст! Спасибо! Море эмоций.
          +6
          Секунду, гайдлайны были ещё со времен 1.5, пусть и не на 100 страниц, но я точно помню советы об общей системной теме, как правильно делать всевозможные меню, подбирать иконки и прочее, и тому подобное. Отлично помню свои впечатления от Android-приложений в маркете, когда они только начали появляться — почти никто не следовал этим гайдлайнам.
          Если здесь и есть вина Google, то в том, что они пропускали все приложения, даже те, которые UI guidelines прямо игнорировали. И очевидно, что им было позволено пройти, чтобы побыстрее набрать объем приложений, аналогичный AppStore. В гугле не ожидали, что эта волна пойдёт стихийно и новые разработчики будут смотреть на опыт своих предшественников и так же игнорировать правила, как и они. То, что они сейчас занялись лёгкой модерацией, о чём-то говорит. Посты вроде этого и есть лекарство от творческого хаоса, который царит в маркете. Главное — распространить эту информацию как можно шире.
            +3
            Здесь вообще одна из основных проблем андроида (по началу, по крайней мере): он был выпущен, чтобы «догнать айфон». Поначалу это были только жалкие пародии на iPhone OS (1.6, к примеру). Ко второй версии ситуация начала выправляться, к четвёртой появилась вполне уже самобытность.
          +5
          Требовать, чтобы все разработчики стали хорошие и пушистые сами по себе, довольно абсурдно. Глобальные изменения не идут «с низов». Только «сверху». Повысить требования на вход в маркет и всего делов. Все таки гугл получает немаленькую прибыль от маркета, а вот тратиться на модерацию не хочет.
            +1
            Давайте вы за всех не будете решать.
            Хотите анально огороженную платформу — велкам на iOS.

            Есть бесплатные приложения, которые решают свою задачу. И я бы не хотел, чтобы гугл их зарезал просто потому, что у программиста нет желания прилизывать кнопочки и отправлять приложение 100-й раз на модерацию GUI.
              +7
              Я и не говорю про анально отгороженную, что за паранойя? На андроиде ведь без проблем можно ставить альтернативные маркеты. И как вариант, чтобы 1 основной был с модерацией, а другой как сейчас. И овцы целы, и волки сыты. Кому лень, выкладывали бы в общий маркет. А если хочется, чтобы твоим приложением пользовались действительно массово, то изволь вылизать его и привести в соответствие к гайдлайнам.
                +7
                Даже не обязательно отдельный маркет, достаточно в текущем ввести категорию для поиска «verified to conform Android guidelines» или что-то в этом роде.
                  +9
                  >> verified to conform Android guidelines

                  Хорошая идея. Нужно не наказывать разработчиков, а поощрять.
                  Например, проверенные приложения ранжировать выше в поиске.
                    +4
                    А вот это отличная идея.
                  –3
                  Отдельный маркет для неподходящих — синоним огороженности. Пользователи в большинстве своём не будут ставить какие то доп. галочки и прописывать репозитрии.
                +1
                Прибыль от маркета гугл если и получает, она скорее всего уложится в статистические погрешности в его масштабах. Это не их бизнес, вот и всё объяснение тому почему они к нему так относятся. Они рекламу продают и поиск, а андроид это всего лишь побочный продукт для поддержки основного бизнеса. Аппл этим живет, у них ничего больше нет, и именно это их сделало тем что они сейчас есть.Поэтому они не могут себе такой роскоши позволить и вынуждены всё вылизывать.
                  +1
                  Понимаю, что это не основное, но не думаю, что это капля в море. Не зря ведь гугл расширяет это сейчас на фильмы и книги. Это же золотое дно! Ты предоставляешь магазин, и имеешь комиссию со ВСЕГО товара. При этом очень даже немаленькую.
              0
              Пожалуйста, используйте ActionBarSherlock
              Это из серии «красота требует жертв». С ActionBarSherlock приложение сразу становится тяжелее почти на 1Mb, что для мобильного приложения не очень хорошо.
                0
                Вот именно. Тоже думал его использовать, но после того, как он увеличил размер приложения в 3 раза, решил, что таких жертв красота не стоит.
                  +3
                  К слову, если уж брать — то лучше сразу HoloEverywhere. Она во-первых, уже включает в себя ABS, а во-вторых, эмулирует тему Holo даже на 2.х, создавая единый стиль. А то ActionBar с модными контролами и одновременно старые контролы, скажем, в списке под ней выглядят дико.
                  Пробовал HE в паре небольших проектов — весьма доволен.
                    0
                    Я собирался включить HoloEverywhere в пост, но потом передумал. Если в приложении, например, все управление в экшенбаре, а внизу только списки и текст, без виджетов — то HoloEverywhere уже и не нужен, можно руками заскинить нормально. Поэтому категорично советовать его использовать не стал.
                      0
                      Я подключил HoloEverywhere и ActionBarSherlock в свой проект.
                      В результате, объем вырос на 3-4 мб. Это выглядит несколько странно для небольшого приложения
                  • UFO just landed and posted this here
                    • UFO just landed and posted this here
                        0
                        Если пройтись по ресурсам вместо стандартного упаковщика, ImageOptim, то можно уменьшить приложение почти в два раза.
                        А так же пережать большинство полноразмерных картинок в jpg. Не раз замечал, что ios разработчики наплевательски относятся к картинкам, все в png, картинки хоть и тянутся, но размер, вместо минимального 20х20px у них 100x200 и т.д.
                        +2
                        Из-за поддержки Ретины, главным образом.
                        • UFO just landed and posted this here
                          • UFO just landed and posted this here
                              0
                              Если бы не пихали, система имела бы гораздо меньше популярности, мне кажется.
                              Не могу сказать за всех, но лично мне скевоморфизм по душе.
                            +1
                            Да, но простите: раньше телефоны на android имели в распоряжении 50-60 mb под приложения после всех обновлений (facebook, twitter, google play, прочие сервисы). Я сам являюсь бывшым обладателем такого HTC смартфона.
                            Это сейчас ситуация улучшилась.
                            Смартфоны Apple не имеют меньше 8gb на борту
                            • UFO just landed and posted this here
                                0
                                Но приложения под них всё ещё актуально писать.
                                Включая в них Support Library и ASB
                                • UFO just landed and posted this here
                                    +2
                                    Что делать несчастным пользователям 2.x, на которых нет апдейта? :\ Всех на свалку?
                                    • UFO just landed and posted this here
                                        +1
                                        Да. Internet Explorer 8 на Windows XP тоже нельзя обновить, но это же не значит, что не нужно использовать canvas.
                                          0
                                          Там можно поставить Chrome или Firefox. Покупать новый телефон за 10-20к, из за того, что столь быстро растут минорные версии? Это при том, что тот же софт запустится и на 2.х телефонах.
                                            –1
                                            Но и на 2.x можно поставить какой-нибудь CyanogenMod.
                                              0
                                              2.х это уже Cyanogen! А в 4.х вообще большая часть оборудования уже не работает. Так что, выбора нет.
                              +2
                              С ActionBarSherlock приложение сразу становится тяжелее почти на 1Mb

                              Неправда. В своей хабрачиталке использую ActionBarSherlock вместе со SlidingMenu, PullToRefresh и UniversalImageLoader — упакованное приложение со всеми assets'ами и картинками весит около 1Мб. Да и выше уже правильно отметили — по сравнению с версиями iOS приложений под Retina-дисплеи эти килобайты не так важны. Я не к тому, что заботится о размере приложения не надо, а к тому, что такие библиотеки как ABS дают гораздо больше плюсов, чем минусов.
                                +3
                                А приложение на стандартных компонентах и иконках может весить 40-100 килобайт… это просто к слову.
                                  +1
                                  Мне вот просто интересно количество людей, активно использующих смартфон и ставящих всякий софт, но не имеющих хотя бы периодического доступа к безлимитному интернету. Ну в конце концов, сейчас в каждой второй тошниловке бесплатный вайфай.
                                    0
                                    А я бы ещё поинтересовался статистикой владельцев телефонов с ОС версии ниже 2.3, где установка софта на карточку работает только через комбинацию Root+App2SD. Хотя сейчас даже лоулевел телефоны идут с минимум 2.3, а то и сразу с 4.0.

                                    Но в целом, да, экономить килобайты не велик резон.
                                      +1
                                      А стоит ли интересоваться этой статистикой? Гугл говорит, что аппаратов с ОС версии ниже, чем 2.3.3 всего 5,4%. С одной стороны, хотелось бы под них оптимизировать ПО, с другой — зависит от экономической целесообразности.
                                        0
                                        В принципе, сейчас даже дотационные бюджетные модели идут с 4.X, так что в целом — не страшно. Но совместимость с 2.3.3 ещё оставлять нужно — среди знакомых таковых очень много.

                                        А ещё среди знакомых хватает людей с qwerty-андроидами, а такие практически не впускаются — все старые на версии 2.1-2.3
                                          0
                                          2.3 — безусловно, на ней сидит ~40% пользователей Андроид.
                                            0
                                            А мне кажется, что пора обновляться. Люди будут пользоваться (и выпускать) 2.3 до тех пор, пока в Google Play не перестанут появляться приложения для 2.3. Для 1.x приложений практически не осталось, вот теперь и только 0.1% пользователей. Может быть, перестанем выпускать приложения для 2.3, тем самым облегчим жизнь и всем разработчикам (потому что не придется делать обратную совместимость), и пользователям приложений этих разработчиков (не придется смотреть на дизайн 2.3 в 4.x)?
                                              0
                                              Гм. 40% пользователей — это процентов 20-30 дохода. Вы готовы отказаться от трети дохода? Вот и остальные тоже не готовы.
                                                0
                                                За идею готов. Вот если бы все были готовы, а не преследовали меркантильные интересы, и мир бы лучше был.
                                                  0
                                                  Да в реальной жизни — вы готовы отказаться от трети заработной платы ради идеи?
                                                    0
                                                    Смотря для чего.
                                                      0
                                                      За идею о том, что новый софт должен писаться только по самые актуальные версии ОС, а тех, что в районе трети, не должны поддерживаться.
                                                        0
                                                        Ну не по самые, но под довольно новые. Отказаться от Android 2.3 или Windows XP готов был бы, они очень старые, а от 4.0 или от Vista — нет.

                                                        Хотя от поддержки XP просто так отказываться смысла нет. Ради использования DirectX 10/11 бы отказался, а если просто окошки, то нет, потому что правила дизайна не менялись, и в последних версиях Windows старые окна выглядят нативно, в отличие от Android, где используются старые шрифты и виджеты.
                                                          0
                                                          А меня не напрягают старые шрифты и виджеты… но у меня и телефон под Android 2.3 =) Но даже когда я пересяду на более новый, а случится это скоро, от поддержки 2.3 не откажусь — ведь их немалая часть на рынке.
                                                • UFO just landed and posted this here
                                                    0
                                                    Я выше давал ссылку на источник.
                                                    • UFO just landed and posted this here
                                                        +1
                                                        Безусловно, может. Но вы, начиная разработку нового приложения, не знаете ведь, в какую нишу попадете, верно (мы берем приложение, не требующее особых аппаратных возможностей, иначе всё становится совершенно по-другому)? Собственно, наша дискуссия несколько странна. По мне, так достаточно очевидно, что даже 10-12% дохода — это действительно много. И если приложение делается для души или в рекламных целях, то можно ограничивать область применения, но если делать приложение, которое обязано генерировать доход, а к тому же и не одно, то 10% — это очень много.
                                                        • UFO just landed and posted this here
                                                            0
                                                            1. Без дохода нет прибыли. Поэтому этот тезис тут может присутствовать в случае, если вы либо любите делать риторические заявления, либо меня принимаете за слушателя детского сада :)
                                                            2. См. пункт 1. А если вы выпустите на рынок черные перчатки, то 100% тех, кто носит ваши перчатки, будут носить черные перчатки. Только вот любители красных перчаток в вашу статистику не попадут.
                                                            3. Потому что: а) до конца 2013 года еще как минимум 7 месяцев, и б) кто сказал, что к концу 2013 года доля 2.3 упадет до 10%?

                                                            Вообще, о чем мы спорим? Если мой сотрудник придет ко мне и скажет, что из-за его видения красоты мира компания должна недополучить хотя бы 5% прибыли, то я предложу ему компенсировать эту разницу за свой счет. Как вы думаете, что ответит сотрудник?

                                                            В какой момент для вас 10%, от которых вы так легко сейчас отказываетесь, начнут играть роль? В случае вашего совокупного дохода от приложений в $100? В $1000? В $10000 или $100000?
                                                            • UFO just landed and posted this here
                                                                0
                                                                Вы начинаете играть словами. Стоимость разработки с поддержкой старых версий не кардинально дороже разработки только под новые ОС.
                                                                • UFO just landed and posted this here
                                                                    0
                                                                    Неожиданный вопрос, но многое объясняет. Моя компания занимается разработкой корпоративных приложений под Андроид.
                                                                    • UFO just landed and posted this here
                                                                        0
                                                                        Нет, потому что ни один заказчик в здравом уме не пришел к нам с просьбой сосредоточить разработку на младших версиях, полностью убрав поддержку старших. Скорее, наоборот, везде требование (заметьте, не просто пожелание) обеспечить совместимость.

                                                                        Кроме того, провести эксперимент, о котором вы говорите, невозможно в принципе, и если бы вы хоть немного задумались, то поняли бы это. Одинаковые продукты выпускать бессмысленно, потому что чистого результата не будет. Версию «для всех» будут ставить как пользователи 4.x, так и те, что ниже, а версию «4.x» — само собой только 4.x. «Грязный» результат версии «для всех» невозможно будет использовать для сравнения. Кроме того, появятся и чисто маркетинговые\психологические проблемы из-за того, что некоторые будут видеть два одинаковых продукта. Можно попытаться выпустить продукт «только 2.3.x», но это тоже не даст возможности провести эксперимент, потому что будет много недовольных, да и стоимость разработки невозможно сравнить в этом случае (стоимость разработки двух разных версий продукта под старую и новую ОС или одной, но поддерживающую обе версии будет различаться существенно менее, чем в два раза).

                                                                        Далее, вы опять себе придумали смысл, которого в моих словах не было. Я нигде не говорил, что разница в разработке и поддержке < 10%. Я говорил о разнице в доходе и, соответственно, прибыли. И эта разница на данный момент выше, чем разница в стоимости разработки и поддержки, соответственно, пока имеет смысл поддерживать и более старые версии (с оглядкой на приложение, конечно; повторюсь, что речь идет об офисных приложениях).

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

                                                                        На самом деле, этот наш спор не имеет особого смысла. Перед тем, как начинать разработку, коммерческий разработчик обязан понять свою целевую аудиторию, аппаратные ресурсы, которые понадобятся пользователям для работы приложения, а так же денежный поток. Очевидно, что если люди не меняют старые телефоны, то у них либо нет средств на это (а значит, они с меньшей вероятностью купят приложение), либо они консервативны. Поэтому в своих прогнозах выше я не приравнивал напрямую количество пользователей старых версий с доходом. Однако если предполагается, что приложение будет пользоваться хотя бы относительной популярностью, монетизация будет при помощи рекламы, при этом нет перекосов из-за аппаратной составляющей на более современные аппараты, а срок разработки невелик (1-3 месяца), то я настаиваю на своей точке зрения о необходимости поддерживать старые версии. В этом случае необходимо охватить максимально широкий сегмент. Всякие калькуляторы, to-do приложения, казуальные игрушки и т.п. — все это нужно продвигать на как можно более широком рынке. А учитывая, что бюджетные аппараты до сих пор выпускают на Gingerbread, то выбора особого не остается.
                                                                        • UFO just landed and posted this here
                                                                            +1
                                                                            Вы не понимаете, что ли что ПРИБЫЛЬ = ДОХОД — РАСХОД

                                                                            Имея экономическое образование, я прекрасно понимаю, как и что рассчитывается. И представляю влияние постоянных и переменных затрат на издержки, а так же понятия точки безубыточности и масштабируемости производства. Так же я понимаю, что отказываться от 41,7% потенциальных пользователей глупо, во первых, по финансовым причинам, а, во-вторых, еще и по маркетинговым, потому что пользователи, поняв, что не могут использовать на своем устройстве ваше приложение, поставят приложение конкурентов. И после обновления аппарата\ОС до нынешней версии вряд ли поспешат вернуться к вам. И уж точно отсутствием поддержки вы не подтолкнете их на обновление аппарата.

                                                                            «10% к концу года» в настоящий момент — ваши фантазии. Так может быть, а может и не быть. Повторюсь, до конца года еще 7 месяцев.
                                                                            Что же касается моего утверждения о том, что не отличаются кардинально издержки — это показывают банальные расчеты. К сожалению, так как я не могу привести здесь реальные выкладки по понятным причинам, моё утверждение голословно. Но ваше не менее голословно; при этом я хотя бы делаю предположения исходя из фактических данных.

                                                                            Это все равно, что говорить, что обеспечение работы сайта под IE6 в дополнение к Google Chrome слабо влияет на стоимость разработки и поддержки.

                                                                            Я бы посоветовал вам не нервничать, нервные клетки восстанавливаются крайне медленно. Только обидой на несогласие с вашим мнением и последующим волнением я могу объяснить попытки использовать глупые и максимально утрированные аргументы, недостойные нормальной дискуссии. Если непонятно, что я имею ввиду, то посмотрите на статистику использования IE. Вам не кажется, что сравнивать 42% и 0.1% (IE6), 0.9% (IE6 + IE7) и даже 6.2% (IE6 + IE7 + IE8), мягко скажем, некорректно?

                                                                            P.S. Еще раз напоминаю вам, что любой выбор зависит от обстоятельств. И любая категоричность близка к фанатизму, а фанатизм не воспринимает доводы. На всякий пожарный оставлю тут пару ссылок; не могу утверждать, что согласен однозначно с тем, что там сказано, но кое-какие здравые мысли есть.
                                                                            • UFO just landed and posted this here
                                                                                +1
                                                                                Мне немного непонятно, почему я что-то вам должен доказывать. Особенно при таком тоне беседы. Вы утверждаете, что это не так — ну, и доказывайте это. Хотя я лично потерял всякий интерес к общению в таком тоне и таком ключе. Всего хорошего.
                                                                                  0
                                                                                  • Вы бы точками (&bull;) в начале комментариев уровень показывали, а то месево какое-то получается.
                                                        0
                                                        Справедливости ради стоит отметить, что 40% аппаратов != 40% пользователей…
                                                          0
                                                          Вот именно. Немалая часть пользователей 2 версии уже обновилась до 4, но лишь малая часть отвязывает телефон от Google Play, и иногда им пользуется, а телефонов на 2.3 выпустили огромную кучу, гораздо больше, чем 2.2 и ниже, вот у них и такой большой процент.

                                                          К тому же, увеличению доли способствуют разработчики, у которых много устройств на 2.3 для тестирования. Создаётся замкнутый круг такой. Поддерживать надо, потому что доля большая, а доля большая, потому что поддерживать надо.
                                                    0
                                                    А мне кажется, что пора обновляться.


                                                    Для многих моделей, увы, обновление = покупка нового смартфона.
                                        +3
                                        Все верно. ActionBarSherlock +800 Кб к весу приложения, проверял.
                                        0
                                        ProGuard, нет?
                                        +1
                                        Думал расскажут как свистелки/перделки хотя бы отфильтровать, если не искоренить =) По факту довольно часто попадаются приложения, которые свиду выглядят вполне себе ничего, а как начнешь пользоваться — ужас. Чего стоят только всякие блокноты, читающие файлы целиком или не понимающие юникод. Но за намеки на качественный UI — спасибо.
                                          0
                                          что за приложения на первом скрине?
                                          +2
                                          Правильные советы, но
                                          И в этом виноват не Google, а разработчики.
                                          скорее виноваты сами пользователи, — если они потребляют такой контент («пипл хавает»), то разработчики продолжают его генерить. Рынок, естественный отбор.
                                            +4
                                            То есть в качестве отечественного автопрома виноваты сами водители?

                                            Но почему у нас тогда качественные самолеты получаются, не ужели летчики подсуетились?
                                              +6
                                              Ну вообще-то, знаете ли, и водители тоже виноваты. Все эти «лады» ведь исправно покупают, и старые, и новые. Просто аудитория этих покупателей с нами едва ли пересекается. Перестали бы реально это непотребство брать – завод бы до последнего винтика разобрали за полгода.

                                              Ну а самолёты у нас не пилоты покупают, тут ваше сравнение не работает. И вообще, вы про какую авиацию – гражданскую или военную? Потому что гражданских наших воздушных судов я всё-таки побаиваюсь.
                                                +3
                                                Наверное, потому что в ценовом сегменте лучше «лад» ничего и нет? (хочешь лучше — плати больше).

                                                Да и сравнение некорректное, как и любая аналогия — приложения то и бесплатные бывают, а вот пунктов раздачи бесплатных автомобилей я не встречал.
                                                  +3
                                                  есть логан. машина -зверь, страшная только как ядерная война. И стоит дешевле калины и прочих гламурных кастрюлек. Тем не менее очень и очень многие почему то покупают калины с приорами. При этом тот же логан в соседней Европе стоит еще дешевле, а высокие пошлины позволяют продавать еще более брутальные кастрюли по цене логана в Европе.
                                                  Пока потребитель голосует за это убожество рублем, делать качество хоть сколько нибудь лучше получается что смысла никакого нет, все равно покупают.
                                                    0
                                                    Спасибо за наводку. Я пока не интересовался автомобилями (ну без надобности просто), но видимо уровень эстетических чувств у каждого свой. Машина как машина, ядерная война её обошла стороной.
                                                      +2
                                                      по мне так все что угодно, только не тазовские капсулы суицида :) А логан на самом деле исключительно хорош за свои деньги, надежный (ломаться нечему почти), вместительный до одури (для Б класса, хотя поудобнее многих С будет). Когда покрашен полностью так не такой уж и страшный. Внешность можно выбирать когда на это деньги есть :)
                                                    • UFO just landed and posted this here
                                                        +1
                                                        Да, вы правы. Когда я последний раз интересовался логаном, он стоил что то 310-320К, калина что то примерно около 300 тоже была. Сейчас смотрю ситуация немного изменилась, логан уже 350. Калина начинается от 280 (что конечно дешевле) и до 410. Приора — от 340, что уже считай столько же. Только вот политика продаж ватоваза не предполагает приыли для дилера, поэтому они костьми лягут чтобы туда засунуть сигналку\магнитолу\антикор\диски\шини\коврики иначе они без денег останутся, так что 20ку думаю можно к ценам добавлять. Но при этом в случае с логаном вы получаете обалденную по эксплуатационным характеристикам и цена\качество машину, а в случае с автовазом кастрюлю с колесиками (ничего личного, не принимайте близко, это мое личное мнение).
                                                        Плюс он еще довольно большой и удобный. Я на логанах много ездил, в компании он были в парке, и аппараты из общего пула (которые раздавали всем подряд на разовые поездки и на которых ездили как попало) доходили до 150к без особых пробем, при этом хоть и скрипели подвеской где только можно (что не удивительно с учетом как их убивали), но еще вполне себе нормально ездили. Машины персональные под сотню смотрелись и водились почти как новые. Опять же страховка — тазики новые очень бодро угоняют на запчасти (спрос большой), страховать их надо полюбому и это похоже стоит сравнимо с иномарками. Угонять логан я думаю считается западло :)
                                                        • UFO just landed and posted this here
                                                            0
                                                            Плюс он еще довольно большой и удобный
                                                            Ага, особенно удобной (в голой базе) является функция регулировки зеркал заднего вида — руками, высунутыми в окно!
                                                              0
                                                              Ну один-то раз можно высунуть да подстроить ручками, благо не каждый день приходится делать.
                                                        +1
                                                        а вот пунктов раздачи бесплатных автомобилей я не встречал
                                                        ну это пока. Дают же бесплатно телефон при заключении контракта на год-два? Вот когда нефть ещё подорожает, то уверен, что автомобиль будут давать бесплатно при заключении контракта на определённое количество литров или километров.

                                                        А насчёт бесплатных приложений, то их не так уже и много, а от независимых разработчиков я так сразу и не припомню. Приложения, которые показывают рекламу и клянчат денег я к бесплатным не отношу.
                                                          0
                                                          Дают же бесплатно телефон при заключении контракта на год-два?


                                                          У нас пока не очень распространено. Да и порядок цен между телефоном и автомобилем несколько разный…

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

                                                          Ну это уже ваше мнение :) Объективно, приложение, за которые не необходимо заплатить деньги за использование — бесплатные, потому что оно бесплатно для вас.
                                                            0
                                                            Да и порядок цен между телефоном и автомобилем несколько разный
                                                            А порядок цен и не важен совсем. Важна пропорция между ценой товара и стоимостью владения (эксплуатации, обслуживания). Для телефонов, довольно приблизительно, это 1:1 — стоимость смартфона = годовая абонплата. Понятно что аппараты разные бывают, и тарифные планы тоже. Я взял для сравнения Huawei Ascend D1 U9500 (3тыс. грн) + почти безлимитный тариф КиевСтар-а за 250грн/месяц.
                                                            С авто отношение чуток другое, но опять таки пока — пока цены на топливо (контент) не пойдут вверх. Накатывая 30тыс. км в год, только на бензин, без учёта ТО, получается порядка 26тыс. грн — всего треть от цены Калины.
                                                            Объективно, приложение, за которые не необходимо заплатить деньги за использование — бесплатные, потому что оно бесплатно для вас.
                                                            Но есть же косвенные траты на бесплатное приложение, — как минимум время (которое тоже деньги), которое вы тратите на просмотр/отвлекание на рекламу, плюс деньги, например на мобильный трафик для показа баннеров: с ценами наших операторов на мобильный интернет, вполне может быть такой вариант, что дешевле купить приложение, чем давать ему качать баннеры.
                                                              0
                                                              Порядок цен важен. Телефон я могу купить без кредита с зарплаты, причем выбор широк. И пользоваться им буду года два, не вкладываясь ни во что, кроме связи — более того, если повезёт, он за эти два года не сломается.

                                                              Автомобиль я не могу купить с зарплаты, ну разве что совсем убитый и БУ, который придется ещё и ремонтировать минимум на такую же сумму, если не на две. ТО тоже стоит учитывать, а это может быть немалая сумма (плюс страховка).

                                                              Мобильный траффик меня не волнует — подключил безлимит. Пока не было безлимита, включал интернет в принципе только по требованию — большая часть софта в оффлайне работает, рекламу не показывает.

                                                              Короче, пока пример, мягко говоря, не корректен :)
                                                          0
                                                          «Наверное, потому что в ценовом сегменте лучше «лад» ничего и нет? (хочешь лучше — плати больше).»
                                                          За эти деньги лучше купить поддержанную иномарку, которой лет 5-6.
                                                        +1
                                                        Капитализм. Отечественные автомобили имеют большой и устойчивый спрос. К тому же, за свою цену, качество вполне приличное (говорю как владелец Калины). Так же и тут. Сделать приложение для андроида гораздо дешевле.
                                                          +2
                                                          Не хотелось бы разводить тут политоту, но немалую роль в том, что в их ценовом сегменте мало конкурентов играют заградительные пошлины для иномарок. Не было бы таких пошлин — глядишь и у Автоваза все было бы печальнее.
                                                          • UFO just landed and posted this here
                                                              0
                                                              заградительные пошлины только на древние машины совсем. На новые они просто высокие, и неумные (объем двигателя как основа расчета).
                                                        +7
                                                        Что-то разработчиков не слышно. Отвечу как один из них. Это для пользователя один телефон, а для разработчика их сотни (!) разных модификаций. Кто скажет мне, что пиши и везде все выглядит одинаково, тот будет совсем не прав.
                                                        Small, MDPI, HDPI, Full HD; 2.3, 3.0, 4.0; Tablets, 5", 3" — все это надо хоть один раз запустить и проверить. Так что обвинять разработчиков абсолютно бессмысленно. Те кто работал с UI, знают какое количество человекочасов тратится на проверку всех конфигураций. А если учесть, что большинство так называемых «низкокачественных» приложений не приносят прибыли, остается один вопрос: а что вы хотите?
                                                          +1
                                                          Если б только дело в размерах. Проверять нужно не только на одном планшете 7" например, а брать несколько с Android от разных производителей, например Amazon, Samsung и т.п. Тут только надешься, что необходимые ресурсы ОС не подправлены, ведь в результате финальный может быть несколько иным от задуманого.
                                                            +2
                                                            Я когда-нибудь насобираю материала об этом на отдельный пост. В то время как сделать просто адаптивную верстку можно средствами редактора в эклипсе и десятка эмуляторов, прошивки производителей создают намного больше проблем, чем кажется.

                                                            Из-за того, что в прошивке Sony для какой-то Xperia решили захардкодить черный градиент в виджет дейтпикера, пришлось заменять весь дейтпикер на кастомный…
                                                              0
                                                              У меня вообще ситуация отличная с Lenovo. Написано во View-xml цвет фона белый, а цвет шрифта черный. Нет же. Lenovo-android решило что оно знает лучше и надо следовать ее guidelines (черный holo) и написало черным шрифтом на черном фоне.
                                                            0
                                                            Полностью согласен, это полный фарш.
                                                            А ещё когда начинают систему перешивать… вплоть до неодинаковой работы HTTP служб на девайсах. Вот это начинаются свистопляски
                                                            –1
                                                            приложения с дизайном из iOS — это хорошо.
                                                            приложения с темами из 2.3 — это будет ещё долго. да, можно сделать новый интерфейс для новых устройств. нет, усилия не окупаются.
                                                              0
                                                              И чем же хорошо? Тем, что пользователь, привыкший к стандартным элементам интерфейса Android должен привыкать к интерфейсу iOS?
                                                              0
                                                              Это всё смешно. Пока пипл хавает, будут корявые приложения. Это не связано ни с Google, ни с разработчиками. Всё завязано на пользователях. Перестанут такие приложения приносить деньги — станут «причёсывать» лучше свои программы.
                                                                0
                                                                сорри, промахнулся
                                                                0
                                                                При нажатии на элемент списка проверяем — есть ли второй фрагмент. Если есть — обновляем его содержимое, если нет — значит мы на маленьком экране и нужно стартовать активити.

                                                                Хм, во многих гайдлайнах для экрана «details» не стартуют новую активити, а лишь с помощью replace заменяют текущий фрагмент, да и вобще от активити советуют держаться подальше, хотя я может не прав, поправьте, если что
                                                                  0
                                                                  Все верно, только я привел пример для случая: «Даже если времени на переписывание через FragmentManager нет, или это крайне сложно в существующей архитектуре — можно вынести код из Activity во фрагменты и организовать простейшую поддержку планшетов». А так вообще да, делаем одно актививити и заменяем фрагменты.
                                                                  +2
                                                                  Все верно — если хочешь изменить мир, начни с себя
                                                                    +2
                                                                    Насчёт фрагментов: android:layout_width="400dp" делать не надо, иначе один и тот же layout нельзя будет нормально использовать одновременно для 7", 8", 9.8" и 10.1". Лучше в layout_width указать 0dp, а долю размера каждого фрагмента указать в layout_weight. Для узкой полоски (например, имя контакта) подойдёт 1 и 3, для широкой (сообщение) — 1 и 2. Ну если уж очень надо, то на примерно 7" использовать 1 и 2, а на 10" landscape — 1 и 3.
                                                                      0
                                                                      А числа 2 и 3 указывать в integers.xml, отдельно для всех размеров и для 720dp-land.
                                                                      0
                                                                      Несмотря на кучу советов в stackoverflow, хочу спросить совета 'пользователя'. Насколько плохо будет грохнуть всю графику оставив только xhdpi?
                                                                        0
                                                                        Смотря в каком приложении. Я помню в 2.х после такого решения запуск приложения на бюджетных или даже средних девайсах неизбежно приводил к вылету с ошибкой «Bitmap size exceeds VM budget» или как-то так. В общем не хватало приложению памяти для распаковки всех битмапов при пережатии их под нужный экран. Но это касалось простых игр или приложений с кастомным дизайном, в общем где графики было много. Если из графики в приложении только кнопочки, то все равно.
                                                                        На устройствах на базе 4.х вроде этой проблемы уже почти нет (точнее проявляется много-много реже), так что я бы предложил ориентироваться на xhdpi, а если будут проблемы- всегда можно добавить один дополнительный набор уже позже.
                                                                          0
                                                                          Ок, спасибо. У нас приложения как раз с кучей графики, и падения по памяти есть в огромных количествах. Но вся эта крупная графика идет в nodpi, а вопрос касается как раз стандартных интерфейсных картинок, которые я наверное переведу в XHDPI.
                                                                            0
                                                                            всегда можно добавить один дополнительный набор уже позже


                                                                            Падение оценки (за поставленные единички за то, что я купил/скачал, а оно падает) — не критично? (просто любопытно, сам пока продвижением не занимался, софт пока что только бесплатный пишу).
                                                                              +1
                                                                              Нет, не тогда позже, когда оно рухнет у пользователей, а тогда, когда основная масса кода будет написана и будете прогонять приложение на всех девайсах, до которых сможете дотянуться) Будет падать — добавите набор, нет — и так хорошо.
                                                                                0
                                                                                А, понял. Вопросов нет.
                                                                          0
                                                                          Как говорится, если хочешь, чтобы что-то было сделано хорошо, сделай это сам!
                                                                            +1
                                                                            Вы очень многословны и категоричны, но в то же время не смогли справиться с простым заданием, когда разработчики одного из указанных в статье приложений предложили вам за оплату его улучшить собственными руками.

                                                                            В любом случае — спасибо за рекламу. Я бы попросил даже вставить ссылочку на это «ужасное приложение с элементами интерфейса прошлого века» ;)
                                                                              +2
                                                                              Честно говоря, после вашего комментария, я бы опасался иметь с вами дело, как с работодателем.
                                                                                0
                                                                                Будь я работодателем, я бы возможно опасался иметь дело с людьми с такой кармой, как у вас :)
                                                                              +1
                                                                              На самом деле спасибо автору — я, например, не знал от таких штукенкциях как ActionBarSherlock например, и какие фичи он в себе несёт. В следующем приложении обязательно заюзаю.

                                                                              Only users with full accounts can post comments. Log in, please.