Android от А до Я: Что такое открытый исходный код и открытое ПО (open source)
Открытое программное обеспечение (open-source software) предназначено для свободного доступа к исходному коду для всех желающих. Существуют разные лицензии с разными условиями использования от GPL (GNU General Public License) и до более лояльной Apache License. Первая разрешает бесплатное распространение при условии использования этой же лицензии для последующей продукции. Вторая не требует обязательного распространения готового продукта и открытости исходного кода. Android использует обе. Внутри продолжение рассказал об открытом исходном коде и открытом ПО.
Ядро Linux, которое используется в ОС, попадает под действие GPL. Это означает, что все изменения исходного кода должны быть доступны общественности после официального выхода софта. На практике это должно выглядеть следующим образом: такие производители как HTC, Samsung, Motorola, выпуская новое устройство, обязаны делать открытый доступ к исходному коду с моменты выпуска этого устройства. В большинстве своем производители железа немного затягивают с этим.
Исходный код для ОС Android как правило попадает под действие Apache License. Каждый может загрузить исходный код и изменить его, при этом нет необходимости делать код доступным для всех. По этой причине Android не могут изменить или усовершенствовать HTC Sense или MotoBlur. Несмотря на то, что подобная ситуация не нравится многим пользователям, она не может быть изменена в силу коммерческих причин. Если бы производители делали доступными все свои секреты, то отпала бы финансовая причина создавать различные инновации для опережения соперников в конкурентной борьбе. Таким образом, использование более лояльной лицензии является полностью оправданным. Выпуск новых устройств регулярно подтверждает это.
Источник
Операционная система Android
Feb 4 · 6 min read
Android — это операционная система с открытым исходным кодом, созданная для мобильных устройств на основе модифицированного ядра Linux. Эта ОС разработана консорциумом Open Handset Alliance, состоящим из крупных технологических компаний при организующей роли Google. Исходный код ОС представлен как часть проекта Android Open Source Project (AOSP) с лицензией Apache. Выпущенный на рынок в 2007 году Android вскоре стал самой продаваемой операционной системой в истории, благодаря своей открытой модели разработки и удобному интерфейсу. Последняя версия Android 11 вышла в 2020 году.
История развития
Проект Android появи л ся в 2003 году с целью разработки интеллектуальных мобильных устройств. Начинался он с разработки ОС для цифровых фотокамер, но вскоре акцент сместился на мобильные телефоны из-за их большой распространенности на рынке. В 2005 году проект приобрел Google и в качестве основы для этой ОС было выбрано ядро Linux за счет его гибкости и возможности обновления.
С целью разработки платформы с открытым исходным кодом для мобильных устройств в 2007 году Google сформировала Open Handset Alliance с несколькими производителями оборудования и операторами беспроводной связи. В то время каждый производитель выпускал мобильные телефоны на базе собственной платформы, с ограниченными возможностями для сторонних приложений. Альянс заявил, что открытая платформа обеспечит тесное сотрудничество между производителями и разработчиками, чтобы ускорить производство недорогих инновационных продуктов и приложений.
Платформа Android была представлена в 2007 году и вышла на рынок на следующий год. Поначалу ей мешал ограниченный набор функций и небольшая база пользователей по сравнению с конкурентами Symbian и Windows. Однако возможность обновления стала самым большим преимуществом этой ОС, поскольку каждое обновление давало новые функции и улучшенную производительность. Из-за «сладости, которую они приносят в нашу жизнь», первые версии были названы в честь десертов, в алфавитном порядке, например Cupcake, Jellybean и KitKat. Однако вскоре у Google закончились десерты, и с 2019 года новые версии ОС получают номера, начинающиеся с Android 10. Лицензия с открытым исходным кодом также помогла увеличить популярность этой ОС среди производителей мобильных устройств, поскольку они могут теперь модифицировать ОС под свои требования, не влияя при этом на разработку приложений.
Но самая главная особенность в том, что Android — это больше, чем просто операционная система. Он во многом уравнял мобильные устройства с персональными компьютерами, позволив разработчикам писать приложения независимо от аппаратной платформы устройства. Это привело к созданию глобальной платформы для приложений и укрепило позиции Android, как передовой мобильной платформы, и в 2011 году он стал самой продаваемой операционной системой для смартфонов и для планшетов в 2013 году. Сегодня на Android работает множество электронных устройств, включая смарт-камеры, часы, медиаплееры и многое другое.
Архитектура
Первоначально Android разрабатывался для архитектуры ARM, а затем был расширен для поддержки архитектур x86 и x86–64. Однако в целом Android не заботится об аппаратном обеспечении устройства из-за разнообразия и множества типов среди компонентов в мобильных устройствах.
Основой ОС Android является модифицированная версия ядра Linux LTS, которая непосредственно взаимодействует с оборудованием. Драйверы, необходимые для работы устройства, реализуются производителями оборудования и добавляются в ядро. Это позволяет производителям оборудования разрабатывать драйверы для хорошо известного ядра, а разработчикам ОС игнорировать разнообразие оборудования. Android 11 поддерживает версии ядра 4.14, 4.19 и 5.4.
Особенности оборудования дополнительно маскируются также реализуемыми производителями уровнями аппаратной абстракции, которые предоставляют стандартные интерфейсы для высокоуровневых структур, чтобы обеспечить доступ к аппаратному обеспечению устройства, не заботясь при этом о реализации драйверов.
Android Runtime (ART) — это виртуальная машина, которая выполняет код приложения, содержащийся в файлах Dalvik Executable (DEX). Она управляет компиляцией кода, отладкой и очисткой памяти. Каждое приложение работает со своим собственным экземпляром ART, то есть в своей собственной виртуальной машине, чтобы обеспечить изоляцию кода. ART заменил Dalvik в качестве виртуальной машины Java для Android в 2013 году, поскольку его компиляция Ahead-of-Time обеспечила лучшую производительность по сравнению с компиляцией Just-in-Time у последней.
Собственные библиотеки C/C ++ являются важной частью операционной системы, поскольку большинство основных компонентов Android написаны на собственном коде. Инфраструктура Java API — это шлюз в ОС для всех пользовательских приложений. Он предоставляет множество сервисов для приложений в виде вызовов Java API, включая менеджеры действий, ресурсов и уведомлений, поставщиков контента и систему просмотра. Именно поэтому приложения для Android в основном разрабатываются на Java, хотя собственные библиотеки обеспечивают некоторую поддержку C/C++. Совсем недавно также поддерживался и Kotlin, он даже предпочитался Google для разработки приложений Android. Код компилируется Android Software Development Kit (SDK) и архивируется в виде пакета Android (APK).
Android против Linux
Хотя некоторые считают Android дистрибутивом Linux, он имеет мало общего с обычной ОС Linux.
В традиционном стеке Linux ядро выполняет большую часть системных функций, включая управление памятью и файлами, аппаратное взаимодействие и планирование процессов. Системные функции предоставляются приложениям через библиотеки и вызовы API на языке Си. Именно поэтому GNU C является более важной библиотекой в Linux. Пользователи взаимодействуют с системой через оболочки, которые транслируют пользовательские команды в системные вызовы.
С другой стороны, Android можно рассматривать как пользовательское приложение, работающее в Linux. ОС использует ядро для взаимодействия с оборудованием и управления системой, а затем предлагает свои функции другим приложениям через интерфейс API. Этот интерфейс написан полностью на Java, и даже функции библиотек C/C ++ предложены в оболочках Java. В Android нет оболочки, хотя некоторые утилиты командной строки поддерживаются через приложение Toybox.
Кроме того, Android оптимизирован для мобильных устройств, которые обычно обладают малой вычислительной мощностью, имеют небольшой объем памяти и работают от батарей. По умолчанию, в качестве библиотеки C, вместо GNU, он использует Bionic из-за пониженных требований к памяти и процессору. При нехватке памяти, Android может уничтожить наименее используемые процессы и сбросить блоки разделяемой памяти. Кроме того, здесь реализуется уникальная система управления питанием, в которой устройство остается в спящем режиме, потребляя минимальную мощность до тех пор, пока процесс не запросит ресурс.
Ядро Android
Перед установкой на устройство само ядро Linux подвергается модификации несколькими участниками проекта. Во-первых, разработчики Android оптимизируют ядро LTS для мобильных устройств, вносят коррективы в функции Android и оставляют код как общее ядро AOSP. Разработчики AOSP реализуют большинство изменений в виде драйверов устройств, чтобы гарантировать внесение минимальных изменений в основной код ядра. Это позволяет с минимальными изменениями объединять обновления базового ядра в ACK. Поставщики оборудования добавляют драйверы и уровни абстракции для создания ядра поставщика. Затем, производители устройств обновляют ядро в соответствии со своими требованиями, реализуя новые драйверы или даже улучшая систему. Это ядро, в конечном счете, устанавливается на выпускаемые производителем устройства.
Разработка приложения
Основной принцип разработки в Android заключается в том, чтобы абстрагироваться от вариативности оборудования и предоставить унифицированный интерфейс для приложений. Это достигается запуском всех приложений на виртуальных машинах Java, подобных Dalvik или ART. Еще более способствует этой абстракции и упрощает разработку приложений комплект, состоящий из инфраструктуры Java API и SDK Android. Интерфейс API выполняет всю сложную работу, обеспечивая приложениям доступ к системным ресурсам лишь через вызов функции, в то время как SDK предоставляет визуальные инструменты для создания макетов приложений и управления вводом данных пользователя.
Android предоставляет приложениям большую часть своих функций через службы (services). Служба — это приложение, которое выполняет длительные операции в фоновом режиме. Она не предоставляет пользовательского интерфейса и доступна только через платформу API. Службы также могут выполнять операции в приоритетном порядке и сообщениями уведомлять пользователя. Служба также может быть привязана к приложению и обеспечивать интерфейс клиент-сервер.
Стек Android также включает вторую операционную систему Trusty. Она работает параллельно с основной операционной системой и обеспечивает доверенную среду для изолированного выполнения. В основном она используется для мобильных платежей, безопасного банковского обслуживания, обработки паролей и других процессов, требующих безопасности и конфиденциальности.
Заключение
При первых анонсах Open Handset Alliance их планы по взаимодействию при разработке открытой и многоцелевой платформы представлялись не более чем громким заявлением. Однако через десять лет платформа Android произвела революцию, и не только в мобильной индустрии. Фактически, она породила совершенно новые отрасли промышленности и коренным образом изменила наш образ жизни, работы и общения.
Источник
Почему на андроид так мало опенсорсного софта?
Прикладного то есть — заметки, календари, почта и т.д. По сравнению с десктопами. Те что есть похвастаться внешним видом или функционалом не могут, нет сообществ развивающих окружения и наборы приложений (кроме lineageos, но там прикладных почти нет кроме базовых). Взять хотя бы миллионы разных иконок, виджетов в kde, gnome и т.д. — в андроидах подобного и близко нет (по сообществу и софту).
Вот интересно как сложилась такая ситуация.
Низкая культура. Куча программ написана индусами за чашку риса, программа работает и ладно, про опенсорс они и не слышали.
максимально потреблядский рынок.
вот написал ты софтину для десктопа, какой шанс что ее купят? Фиг целых фиг десятых
если написал для андроида, и стоит она бакс — еще как купят, в т.ч. даже в «нищих» странах типа России и Индии
так какой смысл выкладывать на шару то, за что ты сто пудов получишь хоть какие-то бабки?
Очень просто, ибо это не выгодно.
если написал для андроида, и стоит она бакс — еще как купят
Не купят. Пользователи ведроида убегут к более умному конкуренту, у которого будет подобная программа за беспалтно, но с рекламой и воровством личной информации.
умоляю) в «одной новосибирской игростроительной конторе» выпекают мелкие андроид-игрушки по тысяче в месяц. Оказалось бессмысленно пилить на демка+полная версия, можно сразу выставлять по небольшой стоимости. Всё что стоит недорого, люди покупают за красивую иконку, скрины и описание.
А есть категория людей, которые покупают только самое дорогое, если будет пара обзоров. Анальные забавы с in-app purchases и рекламой тоже котируются покупателями-мазохистами. Для дорогих шняг еще нужно SEOшить статьи про «10 приложений для работы со шнягой в 2017 году», где 9 пунктов настоящие, а десятый — твой.
Короче, имхо, смысл в том, что сущетсвует являение софтовый шоппинг. Точно так же как люди ходят IRL по магазам и покупают всякую ненужную фигню. Люди забегают в плей и покупают несколько первых попавшихся пригянувшихся фигнюшек с хорошей иконкой и другим описаловом, подходящим по их ЦА вау-импульсу (кому-то нужна дешевая игрушка, кому-то дорогущее нечто с «премиальным» скином и покупным отключением рекламы)
То есть в целом, популярность регулируется не столько ценой, сколько согласованностью маркетингового импульса
Вот интересно как сложилась такая ситуация.
потому что под андроид писать очень больно, и just4fun отваливается.
так какой смысл выкладывать на шару то, за что ты сто пудов получишь хоть какие-то бабки?
На самом деле такая-же логика применима и к десктопу.
Для андроида меньше OpenSource софта, т.к. разработка под Android — тот еже геморрой, из-за фрагментации ОС, неудобства самой ОС для программистов, многих явных «официальных костылей», итп. Удовольствие то еще, надо сказать.
Но не все так совсем ужасно — на F-Droid не так мало софта, в том числе и годного.
потому что под андроид писать очень больно, и just4fun отваливается.
Сказал чувак пишущий под android на с в виме. no comment
just4fun все-же есть, но не так много, и он старается находить обходные пути, снижающие боль. Тот-же Kotlin немало упрощает жизнь.
Сказал чувак пишущий под android на с в виме. no comment
Ну не на IDEA (Android Studio) же с нативным кодом работать. Пока она запустится, в VIM’е уже можно 10 функций написать.
потому что не покупаешь!
Для Андроида так мало свободных программ (по сравнению с ГНУ) потому, что Андроид (в отличие от ГНУ) *не является* свободной операционной системой.
То есть ровно по той же причине, почему нет такого количества свободных программ для Макоси или для Винды, но еще и усугубленное тем, что на Макось и в меньшей степени на Винду программы с ГНУ портируются тривиально (а часто даже и портировать-то нечего, только собрать), а на Андроид — нет.
Если же в это ваше «опенсорсных» входит что-то еще, кроме свободных программ, то, пожалуйста, разверните это.
Фиг там. Я вот заплачу скорее за попенсор-прогу, т.к. мне проще тыкнуть в гугл-плее, чем мудохаться с кампелянием. А вот платить или не платить за проприетарщину с шансом что разраб забросит пакет — нахрен надо, подумаю три раза.
Так что не надо тут про халяву, не халяву. Единственное — индус возьмет твой код и начнет продавать рядом, т.е. не открывать код — это не плодить конкурентов. Иначе надо много вкладыватьсяв продвижение, рекламу, регистрацию товарных знаков и т.д. Для небольшой студии или независимого разраба слишком много гемора.
То есть в целом, популярность регулируется не столько ценой, сколько согласованностью маркетингового импульса
И свобода кода тут дело десятое. Почему не открывают — я выше написал.
Потому что вся экосистема гнилая. Такая же как у винды, собственно. Открытость только на словах, POSIX совместимости нет, разработка под контролем одной шарашки которую интересуют только деньги. Сборка — боль. Анальный магазин забит проприетарщиной, нормального репозитория нет. И кто захочет писать под это СПО?
По другому было под Maemo — вот там и свобода была, и репозиторий в нормальном дебиановском формате, и любой POSIX софт можно было просто собрать, хоть и на самом устройстве.
опенсорс на десктопе на 95% это либы, проги для разработчиков. а какая разработка на 5″ экране? там только потребление , да дергание удаленного терминала по http через окошко в браузере
Но не все так совсем ужасно — на F-Droid не так мало софта, в том числе и годного.
Годного календаря там нет 🙁
на андроиде у всех попривязаны банковские карточки, и покупка софта делается просто и быстро в один клик зелененькой кнопки «купить», даже подтверждения с CVV не нужно. Никаких выписок со страшными суммами не показывают. Поциент очень быстро привыкает кликать на зелененькую кнопочку сразу же, как ему становится что-то нужно, по делу и без.
чашка кофе стоит три бакса (по крайней мере в Нью-Йорке, в российском макдаке не покупал), человеку не хочется иметь гемор на полдня с перебором бесплатных программ, когда можно клацнуть на зеленую кнопку за треть стоимости чашки кофе, и это решит все проблемы. (Ведь купленное не может быть дерьмом, правда? Иначе получается что ты лох, а ты точно не лох).
а на десктопе тебе нужно знатненько подолбаться, чтобы что-нибудь купить. Особенно в GNU/Linux. Насколько знаю, даже Ubuntu не имеет прозрачной привязки к кредитке, ни в какой версии. В Windows Store тебе все равно надо подолбаться, магазин всячески намекает тебе о значимости действия покупки. В macOS всё попроще, но разрабы под мак AppStore не любят, и зачастую тебе нужно покупать приложение через какие-то левые сервисы, получать серийник на почту, и прочий мрак и ужос (я уже даже и не помню теперь, что покупал на свой мак, и в какой из почт лежат те серийники!!)
про F-Droid это, конечно, хорошая шутка. F-Droid как минимум требует рутового доступа (unattended installs там кривые), что сразу же выбрасывает половину аудитории.
а еще есть люди, которые пользуются, например, приложениями типа мобильного банк-клиента Сбербанка, который при старте «проверяет прошивку» (что бы это ни значило), и сразу же отфильтровывает телефоны с рутом, либо даже с просто установленным каким-то другим источником приложений кроме Google Play (н-р у меня стоял клиент Amazon Appstore for Android, который на минуточку — делает unattended installs без прав рута — даже он стал причиной незапуска банк-клиента). А Сбербанк — это всё еще один из самых значимых банков России, так что ты опять теряешь знатный кусок аудитории. Да и вообще, таких наркоманских банк-клиентов как минимум несколько (знакомые из Касперского это обсуждали по теме «мобильного антивируса» (что бы это ни значило), но я не записывал названия, сорри).
Правильно говорить нужно «свободного софта».
Источник