Android

Все ли Android созданы равными? Программное обеспечение имеет большое значение

Android Nougat

Мы говорили о том, как аппаратное обеспечение в вашем телефоне может иметь значение, когда дело касается пользовательского опыта. Теперь пришло время поговорить о программном обеспечении.

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

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

Что такое Android

Это андроид

Изображение предоставлено Android Open Source Project .

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

Несмотря на то, что все, что вам нужно для создания образа загрузочного программного обеспечения, включено в исходный код Android, вы не можете создать один образ и программу установки, которые можно использовать для любого оборудования. Поддержка конкретного оборудования должна быть объявлена ​​до того, как вы попытаетесь встроить его во что-то, что действительно будет работать. После того, как это будет сделано, вы можете собрать работающую операционную систему Linux и установить ее по назначению.

Однако прежде чем вы сможете что-то отгрузить, вам нужно будет настроить и изменить многое из этого — это то, что мы имеем в виду, когда говорим об оптимизации.

Операционная система

AT & T Galaxy S7

Существует два уровня программного обеспечения — операционная система и связанные с ней дополнительные функции и приложения, которые установлены для запуска на нем. Люди, которые сделали ваш телефон, должны не только заботиться о том, чтобы операционная система работала хорошо, но и поддерживать совместимость с миллионами или около того приложениями. Обратите внимание, что мы сказали: «Поддерживать совместимость», а не оптимизировать что-либо для сторонних приложений. Это совершенно другой вопрос, и Google выполняет большую часть работы с платформой приложений Android — все, что нужно сделать производителю телефона, это попытаться не сломать ничего из этого. И это больше работы, чем вы думаете, из-за того, как эти компании меняют то, как выглядит и чувствует себя Android.

Каждая модель Android работает на разных программах.

Нет двух моделей Android одинаковых. Даже телефоны одного и того же производителя с одним и тем же именем могут работать с разным программным обеспечением в разных регионах (или для разных клиентов — вашей телефонной компании), и они это делают. И это имеет смысл. У нас нет гигабайт дискового пространства, поэтому поддержка каждой отдельной модели Samsung Galaxy S7 — существует более 30 версий этого телефона — встроенная в одно программное обеспечение нецелесообразна. Вот почему, например, вы не можете загрузить обновление Verizon для S7 и использовать его на своей модели AT & T. Но, за исключением небольших изменений, внесенных для разных SKU одной и той же модели, базовое программное обеспечение, используемое на каждом Galaxy S7 (с процессором Qualcomm), одинаково.

Чтобы продолжить с нашим примером Galaxy S7, вы должны также помнить, что «Touchwiz» — это не скин или лаунчер. Это операционная система. Samsung берет это базовое программное обеспечение, предоставленное Google, и меняет его в соответствии с его потребностями. Как это выглядит, какие функции он имеет, а также какие параметры и настройки были созданы Samsung и добавлены в Android таким образом, чтобы сторонние приложения можно было устанавливать и запускать. В коде Android есть много частей, которые Samsung не изменяет (или не может изменить), потому что Google требует сохранения определенных вещей, чтобы использовать их магазин и приложения. Google должен улучшить и поддерживать эти части, но большая часть операционной системы оставлена ​​на усмотрение Samsung для оптимизации под конкретное оборудование, на котором она будет установлена.

Что такое оптимизация?

исходный код

Оптимизация программного обеспечения является неизбежным злом. Это отнимает много времени и сложно. Но без этого пользовательский опыт пострадает. Google постоянно оптимизирует код Android на аппаратно-независимом уровне. Такие методы, как развертывание цикла, использование меньшего количества вызовов функций и более эффективные процедуры использования памяти, — вот те вещи, которые приносят пользу каждому устройству с Android. Но Samsung (в нашем примере) необходимо расширить их для оборудования, которое они используют, чтобы уменьшить общую длину пути инструкций (количество требуемых циклов ЦП уменьшается с меньшим количеством инструкций) и уменьшить объем занимаемой памяти, а также опираться на такие вещи, как планирование и оптимизация кэша для конкретной модели процессора. Все это при добавлении дополнительных функций и функций пользователю и поддержании совместимости с Google Play. Как правило, процесс идет примерно так:

  • Решите, какие функции хотят ваши клиенты. Затем выбросьте 80% из них и решите, какие функции возможны.
  • Определите конкретное оборудование, которое будет использоваться.
  • Сборка загрузочной версии операционной системы с необходимыми функциями все работает.
  • Найдите узкие места, попытайтесь их исправить, сполосните и повторите.

Найти эти узкие места сложно. Исправить их еще сложнее. И есть несколько способов справиться со всем этим. Один из способов — не добавлять в операционную систему функции, которые создают накладные расходы, что дает вам меньше возможностей для неправильной работы. Вот где Мото G 2015 сиял. Это был очень простой телефон с очень простым программным обеспечением. После того, как талантливая команда оптимизировала программное обеспечение, поставляемое на телефон, это стало одним из самых динамичных приложений для Android в этом году — пока вы не добавили в приложение несколько приложений из Google Play. Тогда было очевидно, что аппаратное обеспечение внутри не было способно делать много вещей одновременно, как более дорогие телефоны. Используемое оборудование было недорогим, поэтому телефон мог быть недорогим, а оптимизация программного обеспечения только для операционной системы была превосходной.

Второй способ — продолжать оптимизировать платформу, не убирая при этом никаких важных функций, и позволяя более качественному оборудованию помочь минимизировать воздействие. Galaxy S7 является продуктом каждой работы, которую проделала команда разработчиков программного обеспечения в Samsung с момента появления оригинальной Galaxy S, работающей на оборудовании, достаточно мощном, чтобы доставить его в удобной и дружественной упаковке. В результате телефон получил широкую оценку как отрасли, так и пользователей. Ошибки, связанные с управлением памятью и медлительностью, которые мы наблюдали, включая Galaxy S6, практически исчезли, и если вы любите или ненавидите конечный продукт, вы не можете сказать, что это не один из лучших телефонов Android, который вы можете купить сегодня, когда дело доходит до производительность.

Управление памятью

Управление оперативной памятью

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

Операционная система решает, когда следует завершить (как при закрытии, так и не в фоновом режиме) приложения и процессы, хранящиеся в оперативной памяти. Запись и чтение из ОЗУ происходит быстро — намного быстрее, чем запись и чтение из хранилища. Но это ограничено. Даже для телефона с 6 ГБ ОЗУ все равно необходимо установить параметры для лучшей производительности. И не вся оперативная память, установленная внутри вашего телефона, доступна для использования операционной системой. Части зарезервированы для запуска ядра, графического процессора и сотовой радиосвязи. Во время загрузки обычно используется по крайней мере 512 МБ (или более) ОЗУ, которое используется и недоступно. Это хорошо — этим функциям нужен «мгновенный» доступ к процессору.

То, что осталось, управляется многоуровневым способом. Некоторые приложения и процессы имеют более высокий приоритет, чем другие, и им будет назначен более высокий уровень, чем другим, иногда необязательным, объектам, работающим в фоновом режиме. Когда общий объем свободной оперативной памяти сокращается до предварительно определенного уровня, процессы уничтожаются в соответствии с приоритетом. Цель состоит в том, чтобы сохранить как можно больше вещей в фоновом режиме, оставляя достаточно места, чтобы начать что-то новое. Пока эти новые вещи запускаются, ОЗУ сбрасывается до тех пор, пока у них не будет достаточно для загрузки, и поддерживается свободный буфер. Вот почему вы слышите, как люди говорят, что «свободная оперативная память тратится впустую, когда речь идет о Linux» — Android работает поверх ядра Linux.

Настройка управления оперативной памятью — это процесс проб и ошибок. Тогда больше проб и ошибок. Это тяжело.

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

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

Это все исправимо, при условии, что установлено достаточно ОЗУ. Это еще одна часть процесса оптимизации, и ее трудно понять правильно.

Все андроиды не созданы равными

Андроиды

И мы не должны этого хотеть. Программное обеспечение адаптировано к конкретному используемому оборудованию, а метод проб и ошибок и Red Bull являются частью процесса оптимизации. Это является частью того, что делает каждый телефон Android уникальным и предоставляет выбор для всех.

Похожие посты
Android

Samsung перехватывает чехлы

Android

Samsung Captivate Чехлы

Android

Спринт HTC Hero

Android

LogMeIn зажигание