Когда дело доходит до «взлома» Android и разработки ROM, Стив Кондик имеет большое значение.
Еще в первые дни существования ОС человек, известный в Интернете как «Cyanogen», создал свой собственный ROM для T-Mobile G1, представляя новые функции, улучшая производительность и работая с сообществом, чтобы исправлять ошибки и делать еще лучше, настраиваемый версия Android. Это в конечном итоге привело к появлению CyanogenMod, крупнейшего независимого, поддерживаемого пользователями «открытого» Android-дистрибутива. А в 2013 году, после непродолжительной работы инженером-программистом в Samsung, Кондик стал одним из основателей Cyanogen, Inc, с целью распространения этого программного обеспечения на производственных устройствах на полках магазинов.
В рамках серии Android History для Android Central мы встретились со Стивом Кондиком на Big Android BBQ Europe в Амстердаме, Нидерланды, чтобы узнать о его уникальном взгляде на прошлое, настоящее и будущее Android.
Итак, насколько он отличался от устройств, которыми вы пользовались лично в тот момент, и что привлекло вас в Android в те первые годы?
Стив Кондик: Я не думаю, что раньше у меня даже был смартфон. Я хотел один, и все, что было доступно, было … как будто в то время iPhone только появился, была целая куча вещей WinCE, все странные брендовые вещи … Android был своего рода тем, чтобы смотреть. Мне понравились идеи, связанные с этим, открытый исходный код и все такое хорошее. И я следил за его прогрессом и всем остальным, и когда первое устройство было доставлено, я купил его в день его выхода.
[G1] не должен был быть взломан […] за исключением того, что он сделал что-то довольно глупое и оставил корневую оболочку запущенной за консолью …
И вопреки распространенному мнению, это не было взломано, как не должно было быть взломано. Он был довольно заблокирован, за исключением того, что они сделали что-то довольно глупое и оставили корневую оболочку запущенной за консолью, так что все, что вы набирали на клавиатуре, на самом деле направлялось в корневую консоль.
А.Д .: Я помню это — рассказы о парне, набирающем «перезагрузка» или что-то в SMS-сообщении …
SK: … И это перезагрузило его устройство. Так что да, вы можете в основном порождать сервер Telnet через netcat или что-то в этом роде, а затем получить доступ к устройству с root, что было весело. И это как бы открыло двери для всего.
Итак, я узнал, что, когда Google выпустил [Android] каплю Android, вы можете создать его для устройства. На самом деле это не сработало, как будто нужно было сделать кучу вещей, чтобы заставить его работать, но это было выполнимо. Было несколько других парней, делающих это, таких как Бен [a. JesusFreke] и все эти другие парни. Но то, чем я занимался, так это то, что в конечном итоге это был Android с нуля.
Тогда я только начал добавлять дерьмо к этому. Например, приличная поддержка для запуска чего-либо с вашей SD-карты или попытка выжать из нее больше производительности. И в те дни было что-то, что вы могли сделать, и я подумал, что это здорово, что вы действительно можете это сделать , и вы не можете сделать это ни с чем другим. Это было похоже на первое в своем роде.
AD: В какой момент вы решили, что у вас достаточно, чтобы выпустить что-то, что несколько существенно отличается от AOSP? Поговорите с нами через весь этот процесс и как он закончился.
С.К .: Это действительно не так уж и отличается. У него был root, некоторые пользовательские интерфейсы запуска изменились, были приложения на SD, куча настроек производительности. Я только что опубликовал это в XDA, я думал, что «никто не собирается насрать», и в следующие пару часов было около тысячи сообщений, и это было начало. Было действительно здорово это увидеть.
Люди говорили: «Это круто» или «Это не работает», и я исправлял это, и люди отвечали примерно через пять минут — это было очень быстро. Было действительно здорово видеть такой ответ на что-то.
Я даже не знал, почему я это сделал. Даже не было веской причины. Я просто думал, что это круто.
AD: Android 2009-2010 годов, конечно, сильно отличался от того, что мы имеем сегодня. В каких областях вы работали над улучшением Android в то время, и заметили ли вы, что Google набирает все это в будущем?
SK: Боже мой, как и все . Крутая вещь в CyanogenMod заключается в том, что люди могут появиться из ниоткуда с безумными функциями, которых никто не ожидал. Как будто кто-то появился из ниоткуда с ударами, чтобы уволить несколько лет назад в CM. А теперь это большой интерфейс, верно? Режим «тихие часы» — не беспокоить. [Зефир], как и все наши функции.
[Зефир], как и все наши функции.
Так что у нас есть кое-что новое, но это просто открытый код на работе. Так что, если и когда такие вещи случаются, это означает, что мы просто должны поддерживать меньше дерьма, и мы можем пойти и делать новые вещи.
AD: Вам не кажется, что вы в какой-то степени занимались разработками Google для них?
С.К .: Я имею в виду, что многие люди занимаются исследованиями и разработками Google. В этом все дело.
Стивен Смит [вовлечение сообщества Cyanogen]: в то время в Android еще были порты. Как будто люди пытались портировать вещи с Android 2.0 на 2.1, и люди пытались бы построить на их основе реверс-инжиниринг …
С.К .: Да, и устройства никогда не обновлялись, верно, так что … Сначала было сложно. Поначалу было очень тяжело узнать, как много этого работает. Особенно не имея опыта этого. Но, эй, если вы знаете, как разобрать вещи и собрать их вместе …
Но заниматься такими вещами, как включение [Android 2.1] Eclair в G1, это было действительно поучительно, например, то, что мы должны были сделать, чтобы это работало. Мы многому научились в процессе, и он на самом деле работал чертовски хорошо.
AD: В первые годы существования Android у вас должно было быть любимое устройство для работы или использования лично. Есть ли какие-либо ранние телефоны или планшеты, которые выделяются для вас? Или из-за технологии, или из-за того, что работать или использовать было просто весело?
SK: HTC EVO 4G. Wimax one — первый гигантский телефон. На нем были действительно классные вещи. Нам потребовалось много времени, чтобы все работало правильно, но это было крутое железо, и оно было далеко впереди всего.
Nexus One был потрясающим. Гигантское сияющее глазное яблоко было действительно круто. И мы выяснили, что вы могли бы заставить его светиться цветами и прочим. Таким образом, все уведомления могут быть окрашены с ним. Это было на самом деле вдохновением для «тихих часов», потому что этот чокнутый трекбол с глазным яблоком осветит всю вашу комнату ночью. * Смеется *
AD: CM довольно быстро превратился из одного ПЗУ на одном телефоне в этот «дистрибутив» Android, который работал на множестве различных устройств с участниками по всему миру. Был ли для вас переломный момент, когда вы поняли, что начали что-то действительно грандиозное?
С.К .: Думаю, была пара. Я думаю, что самым заметным, тем, что было шоком , было … Итак, мы с женой, у нас был друг, и она работала в кафе в Питтсбурге. Она пришла домой с работы, и она сказала: «Чувак, в кафе была куча парней, которые устанавливали твое дерьмо на свои телефоны и говорили об этом».
Она как: «Чувак, в кафе была куча парней, которые устанавливали твое дерьмо на свои телефоны и говорили об этом».
И я был в шоке и в страхе прямо там, потому что я, как, «это на самом деле перетекает в реальный мир». Я не думал, что …
А.Д .: … Это не просто разделенная вещь. Реальные люди действительно делали это.
SK: Да. Он превратился из группы людей, которых я не знаю в Интернете, в реальных людей, которые действительно существовали. Так что это было похоже на «ОК, я понял».
Там было множество вещей, которые произошли. В прошлом мы много беседовали с различными OEM-производителями и выясняли, насколько широко [CM] используются основными OEM-производителями для собственной работы, просто потому, что их легко разрабатывать для работы на уровне платформы.
AD: То есть вы говорите о разработчиках внутри производителей, а не просто: кто-то работает на производителя и решает прошить CM.
С.К .: Верно, верно. Они на самом деле занимаются разработкой своих функций на CM, потому что разрабатывать их гораздо проще, чем какой бы то ни было их индивидуальный вкус [Android]. Потому что, возможно, на создание уйдет целая вечность, или потому что среда разработки действительно неуклюжая, или контроль над исходным кодом — это нечто ужасное, как Perforce.
[OEM-производители] на самом деле занимаются разработкой своих функций на CM, потому что намного легче разрабатывать на …
Поэтому многие люди просто делают это на чем-то вроде CM, потому что у них больше доступа, он строится быстрее, и они переносят его обратно после того, как они выполнили свою работу разработчика. Но я обнаружил, что это происходит, как и у любого крупного OEM-производителя, и это довольно здорово. Это было как большая цель для меня.
AD: Большой шаг вперед, который отличил CM от всех этих других ПЗУ для Android, заключался в том, чтобы объединить все в коммерческую установку с Cyanogen Inc. Рассказывает нам, как этот переход работал.
SK: Я технический парень, я не деловой парень. Я, вероятно, никогда бы не сделал это самостоятельно. Кирт [МакМастер], который является нашим генеральным директором — я его не знал, он однажды обратился ко мне в LinkedIn, и у него были некоторые хорошие идеи. Мы встретились в эти выходные и бросили кучу идей и продолжили разговор, и прежде чем мы узнали об этом, мы встречались с венчурными капиталистами и проводили роуд-шоу в Силиконовой долине и все такое. Нам потребовалось около пяти месяцев, чтобы рассказать нашу историю, и мы завершили тур и приступили к работе.
AD: Таким образом, под новым заказом Cyanogen у вас есть Cyanogen OS, которая является коммерческой частью, и CyanogenMod, которая является основной частью открытого исходного кода. Как формулировка миссии этих двух отличается от просто открытой против чуть менее открытой?
С.К .: То есть направление с закрытым исходным кодом, в общем … Если мы решим, что мы собираемся сохранить что-то с закрытым исходным кодом, в общем, это говорит о нашей инфраструктуре, которую мы всегда держали при себе. Даже для CyanogenMod я не думаю, что мы когда-либо выпускали его, потому что это не так уж и полезно для всех. Не то чтобы нам было что скрывать, мы просто никогда не выпускали это. Так что, если он говорит с нашими бэкэндами, мы обычно сохраняем это для себя. Если он содержит какой-либо IP-адрес или что-то потенциально приносящее доход или лицензированное, мы должны хранить это при себе. Или если это дает нам преимущество в каком-то смысле. И [только] если это было разработано внутри. Мы не берем код сообщества и не закрываем его.
Проект с открытым исходным кодом вроде святой земли. И с большим количеством новых людей в компании вы должны научить их, как все это работает и все такое, и иногда это будет для них как-то новым. И это должно остаться: вещь сделана людьми, которые используют это — это цель там. И все идет по существу, тогда как коммерческий продукт — это достижение мира в целом.
А.Д .: И не просто что-то строит для себя, а, может быть, вы это сделали …
С.К .: Да, и миллионы людей используют CyanogenMod или производную от CyanogenMod, так что это не большой секрет. Сейчас это почти мейнстрим. Черт, это мейнстрим в Китае. США немного отличаются.
Проект с открытым исходным кодом должен иметь свой собственный набор правил. Иногда это почти как знание племени. Для некоторых людей это может показаться неприступным, но на самом деле это не так, это действительно очень дружелюбно. Вам просто нужно не похуй, бросьте немного кода, и мы предоставим вам всю необходимую поддержку.
И в компании мы не разрабатываем CyanogenMod, потому что это было бы безумием. Уже достаточно сложно поддерживать кодовую базу такого размера, как она есть. Так что, если вы работаете над нашей внутренней кодовой базой, вы проверяете CyanogenMod плюс 30 других репозиториев поверх него и целую кучу настроек … Так что, да, мы строим поверх этого.
Итак, одна из классных вещей, если вы сделаете что-нибудь классное и включите его в проект с открытым исходным кодом, это может распространиться и на миллионы производственных устройств. Некоторым это нравится, некоторые ненавидят. Но я думаю, что это круто — если я над чем-то работаю и отдаю, я хочу передать это как можно большему количеству людей.
AD: В прошлом году мы наблюдали очень интересную тенденцию к выпуску высококачественных телефонов среднего уровня по действительно конкурентоспособным ценам. Некоторые из них работают под управлением Cyanogen OS. Учитывая ваше понимание, сохранится ли эта тенденция или она станет гонкой на дно?
SK: Там уже огромная гонка на дно, и это будет, где все следующие пользователи приходят. Но, вы знаете, OnePlus One, верно, прибил его с ценой. Кроме того, прибил это в нужное время, и все были достаточно противны, чтобы заставить людей обратить внимание. И что бы мы ни отправляли, это было хорошо . Это было действительно хорошо.
Следующее поколение чипов будет там, где high end станет действительно потрясающим.
И, вы знаете, я думаю, что самая большая проблема с этим классом устройств заключалась в том, что доходы были настолько малы. Вы принимаете это до предела в этот момент. Так что [OnePlus One] имеет довольно высококачественный чип, довольно хорошее аппаратное обеспечение, поэтому планка там довольно высока. Некоторые производители повторно используют чипсет [Snapdragon 801] 8974. Zuk Z1 использует это. OnePlus X также использует 8974. Это все еще мой золотой стандарт. Это все еще, почему я использую [OnePlus One]. У него нет проблем с перегревом, как у многих новых чипов. Я думаю, что следующее поколение чипов будет именно там, где high end станет действительно потрясающим, поэтому я, вероятно, буду придерживаться этого до тех пор. Но некоторые из этого дешевого материала, это чертовски хорошо.
AD: Да, устройства, которые меня впечатлили больше всего за прошедший год, это Moto G и Wileyfox Swift — что вы можете получить этот класс опыта за что-то, что стоит не очень много.
SK: Swift был забавным, и мы обнаружили, что можем пойти еще дальше на еще более слабом оборудовании. Хотел бы я иметь [будущее устройство CM] со мной, но я не делаю. К сожалению, время не сработало, поэтому мы не смогли его поставить из коробки, но мы выпускаем CyanogenMod для него, поэтому поговорим об этом. Но крутая вещь, которая есть, она так хорошо работает. Это как гигабайт оперативной памяти, действительно низкие спецификации, нехватка памяти …
Это действительно интересно для меня, потому что я парень из демо-сцены старой школы, вроде ассемблера на старомодном оборудовании и прочем. Пытаясь выжать из него все виды производительности, я люблю такие вещи. Возможность взять устройство за 75 долларов и заставить его работать довольно хорошо. Мол, это не победит в Антуту, верно? Но если вы просто просматриваете веб-страницы, используете электронную почту, простые вещи, делаете несколько снимков, все работает отлично.
AD: И я полагаю, что среди недорогих вещей много общего в чипах, так что эту работу вам не нужно дублировать.
С.К .: Но я имею в виду, что для бюджетных вещей вам нужно сделать много хитростей — много хитростей — чтобы получить от этого хорошую производительность. И я думаю, что именно здесь мы сможем добиться хорошей победы в будущем.
AD: По мере того, как аппаратное обеспечение смартфонов становится все более коммерциализированным, программное обеспечение и услуги становятся все более важными и, возможно, гораздо более прибыльными. Можете ли вы рассказать нам немного о стратегии Cyanogen, когда речь идет о пакетных услугах?
SK: Для нас это больше об интеграции. Мы не хотим выпускать что-то, имеющее миллионы приложений. И есть определенные вещи, которые Google просто не собирается создавать, верно? Мир разрозненных приложений великолепен, и на самом деле он дает им конкурентное преимущество, в то время как мы подходим к нему с совершенно другой точки зрения, поэтому нам нужно играть в игру немного по-другому.
Мы не хотим выпускать что-то, имеющее миллионы приложений.
Вот почему мы делаем такие вещи, как создание расширяемых приложений, где вы можете написать расширения для номеронабирателя. Как вы можете написать расширение VOIP для номеронабирателя, так что вам не нужно иметь как 12 номеронабирателей для различных служб. Я не хочу вдаваться в подробности, потому что есть целая вещь, которую мы собираемся обойти.
С CM13 мы делаем много вещей с более низким уровнем [растяжимости]. Я немного об этом говорил в лейтмотиве. Есть CyanogenMod SDK, [в] котором мы в основном предоставляем больше доступа к некоторым функциям платформы, а также к материалам, которые мы создали. И мы также используем его как способ очистки нашего кода, чтобы мы могли быстрее перейти к будущим версиям Android. В то же время мы ищем, что мы можем сделать из этого расширяемым.
Так что сейчас там есть кое-что интересное, оно уже доступно. И еще есть вещи следующего уровня, которые делают приложения более расширяемыми — вещи, которые работают на более высоком уровне. И это своего рода большая стратегия для нас прямо сейчас. Помимо поставки на правильные устройства, это будет программное обеспечение и то, как все это объединится, потому что, как я уже сказал, мы не компания по производству оборудования.
AD: Как вы думаете, теперь кто-нибудь может бросить вызов Google и Apple в сфере мобильных услуг на Западе? Или эта дуополия в настоящее время зафиксирована, и все остальные должны ее обойти?
С.К .: Некоторые вещи Google действительно хороши. Некоторые из них просто в порядке. Все это прекрасно работает вместе. У них есть хорошие вещи. Есть ли возможность для большего количества вещей? Да уж! И это становится еще интереснее, когда у вас есть такие расширяемые приложения, потому что даже с чем-то вроде Google Now вы ничего не можете сделать с Now, вы можете просто отдать материал Now.
Они начинают делать немного больше [в «Зефире»], но я думаю, с точки зрения бизнеса, они хотят, чтобы вы были в их мире. И это не плохое место, чтобы быть правым? Я имею в виду, мы хотим, чтобы вы тоже в нашем мире!
А.Д .: Все делают. Каждый хочет заблокировать пользователей.
SK: Вы знаете, наш способ сделать это немного по-другому, верно?
AD: Итак, Cyanogen, конечно, имеет широкий круг аппаратных партнеров среди производителей этих устройств среднего и бюджетного уровня. Но предвидите ли вы возвращение к традиционным телефонам высокого класса?
С.К .: Да … Да … / Смеется / . Я не могу сказать больше, чем это. Я не могу сказать об этом слишком много, но это будет здорово.
Стивен Смит: я второй. Это смешно.
AD: ОК. И, конечно, средний уровень и развивающиеся рынки также чрезвычайно важны.
С.К .: Поэтому самая большая проблема для нас заключается в том, что наши партнеры хотят использовать много устройств, например, далеко забрасывать сеть. И снова, каждая из этих вещей — огромный объем работы. Потому что все оборудование разное, и во многих случаях оно производится разными людьми. Ты должен строить отношения с этими парнями.
Таким образом, наша самая большая проблема заключается в ее расширении. И у нас есть кое-что в работах. Я думаю, что у нас есть довольно хорошая стратегия на будущее, но впереди еще много работы. В этом году вы увидите гораздо больше от нас.
Если бы мы могли масштабировать его среди множества партнеров по [аппаратному обеспечению], это немного более распространено, например, немного сузить сферу, так что это не так сложно, и привести наши вещи в порядок, чтобы мы могли по существу доставить что-то на завод OEM, где они могут просто работать с ним …
Вы получите хорошее программное обеспечение, и оно не будет заброшенным. Потому что все это дерьмо просто заброшенное прямо сейчас.
Но я имею в виду, что это сложно. Это жестоко. Но я думаю, что причина, по которой мы будем другими, заключается в том, что если мы сможем сделать эту работу, у вас будет хорошее программное обеспечение, и оно не будет заброшенным. Потому что все это дерьмо просто заброшенное прямо сейчас. Если вы покупаете один из этих бюджетных телефонов, то, по сути, он похож на OEM-производителя, у которого нет никаких технических разработок. Он обратился к ODM в Китае и сказал: «Я хочу это, я хочу это по этой цене, вот мой логотип. некоторые другие телефоны, дизайн которых нам нравится. « И затем они строят это, и эти парни управляют выполнением и поддержкой, и все, что это, они сделали.
А.Д .: Конечно. Вы видите тонны этих вещей на рынках в Гонконге и даже на CES каждый год.
SK: Да. Миллионы из них. Тысячи из них. Да уж.
AD: Безопасность в Android — огромная тема в наши дни, особенно с использованием высококлассных эксплойтов, а Google и другие переходят на ежемесячные обновления безопасности …
С.К .: Мы тоже находимся на этой победе.
AD: … Но может ли что-нибудь, что основано на Android, быть таким же «безопасным», как закрытая система, как iOS?
С.К .: Я думаю, что это не совсем так, как работает безопасность.
AD: Многим комментаторам нравится думать, что именно так работает безопасность.
SK: Да. Есть два способа посмотреть на это. В проприетарной системе это может быть бомба замедленного действия — вы действительно понятия не имеете. И это не имеет видимости [с открытым исходным кодом]. Я имею в виду, что это так , но вы должны декомпилировать это, и действительно трудно найти ошибки. Так что я в большей степени за безопасность вокруг открытого исходного кода, потому что вы можете посмотреть на код и сказать, э-э-э, окей, кто-то напортачил.
Одной из оригинальных веселых ошибок Android, которую мы вроде как намеренно оставили, была оригинальная ошибка, которая позволила вам получить root права на Motorola Droid. Там было две строки [кода]. И один из них должен был быть немного другим, но, похоже, они просто скопировали и вставили его. Над ним даже был комментарий: «Здесь могут случиться плохие вещи». Так что либо кто-то сделал это нарочно, либо это было весело иронично. Вы могли видеть, что это был очевидный призыв. Буквально в коде сказано: «Здесь могут случиться плохие вещи». И вы смотрели на это, и происходили плохие вещи, потому что код был неправильным. И это позволит вам написать тривиальный эксплойт, который позволит объединить два файла, и он на самом деле будет мигать вторым с подписью первого, чтобы вы могли обойти всю безопасность и получить root-права на устройство.
AD: Итак, вы говорили сегодня [в основной речи], что вы находитесь в довольно хорошем месте с [Зефиром] прямо сейчас по сравнению с тем, где [Lollipop] был в прошлом году …
SK: [Lollipop] было тяжело для нас. Мало того, что это было сложное обновление, потому что было так много изменений пользовательского интерфейса, у нас было много вещей, с которыми мы пытались иметь дело в нашей компании. Это был первый раз, когда мы пытались сделать несколько устройств одновременно, например, на уровне производства. И нам нужно было многое узнать о том, как правильно реализовать собственный процесс.
Так что это заняло больше времени, чем мы хотели. И у нас было много крипов, и время всегда сбивало с толку. Было как будто множество вещей, которые пошли не так. Но, эй, мы извлекли уроки из этого и думаем, что поняли это, и теперь мы можем довольно быстро разобраться с этим.
AD: И, наконец, очень открытый вопрос: как будет выглядеть Android-пейзаж в конце десятилетия, и где Cyanogen впишется в эту картину?
Я хотел бы видеть нас как противоположность окруженного стеной сада.
С.К .: Я хотел бы видеть нас как противоположность окруженного стеной сада. Это большая идея, верно? Что происходит, когда вы делаете противоположное . Где вы становитесь этой платформой, которая расширяется всеми и всеми этими сумасшедшими способами. Как будто это наш мир, и если вы хотите быть в нем, вот как это. Вот где я хочу, чтобы мы были.
Но это первые дни. А пять лет? Я даже не знаю
А.Д .: Это вечность, не так ли?
SK: Да. Может быть, через два года я мог бы подумать о некоторых технологиях, но …
Стивен Смит: Это одна из тех вещей, когда вы не можете видеть больше двух месяцев вперед, потому что она быстро меняется. Вот что мы делаем с нашей платформой SDK, чтобы привлечь людей, которые не просто энтузиасты. В августе я отправился на «Взломать планету в Маунтин-Вью», и как только студенты попали в SDK, они были как «вау». Как сказал [Стив] ранее, там куча классных вещей.
Вы скоро сможете запустить некоторые из этих сумасшедших алгоритмов глубокого обучения на своем телефоне. Это действительно меняет игру.
С.К .: Я думаю, что еще одна интересная вещь, которую все должны наблюдать, — это некоторые из этих новых архитектур ЦП, таких как [Qualcomm] Zeroth. Zeroth — это когнитивный процессор, он в основном имитирует нейроны. Таким образом, вы можете создать некоторые действительно дикие вещи с ним.
Варианты использования для такого рода вещей будут дикими . Мы на самом деле только поверхностно разбираемся с тем, что возможно с такими алгоритмами, теперь, когда есть кремний, который действительно может помочь вам … Например, вы сможете запустить некоторые из этих сумасшедших алгоритмов глубокого обучения на своем телефоне скоро. Это действительно меняет игру. Это разрушает облако.
Конечно, вам нужно много данных. Сети становятся быстрее. Поэтому мне интересно, что мы можем сделать, чтобы ваши данные были ближе к вам.
AD: Таким образом, решение не всегда просто бросить все это в центр обработки данных и выполнить вычисления на нем.
С.К .: Да — власть имеет тенденцию консолидироваться в небольшом количестве мест. И это немного страшно, когда ты думаешь об этом. Я на самом деле не фанат, но это единственный способ сделать это прямо сейчас.
Больше истории Android
- Узнайте больше об эволюции самой популярной в мире мобильной ОС в нашей серии Android History .
Стив Кондик, автор фотографии: SF Android User Group