W Ars zbudowaliśmy pewną tradycję. Każdego roku na Google I / O rozmawiamy na czacie, aby dowiedzieć się więcej o Androidzie bezpośrednio od programistów. Oczywiście prawie każde większe wydarzenie w tym roku zostało odwołane z powodu pandemii koronawirusa, nic nie jest normalne, a Google I / O nigdy się nie wydarzyło.
Nadal możemy przeprowadzać wywiady przez internet! Chociaż zdarzyło się to normalnie pod koniec roku, nadal mogliśmy corocznie rozmawiać z niektórymi z najlepszych pracowników Google w centrali Androida: Dave’em Burke’em, wiceprezesem ds. Inżynierii w Androidzie i Iliyanem Malchevem, głównym inżynierem w Androidzie i kierownikiem projektu Treble.
Zostaliśmy przygotowani pytaniami o bardziej tajemnicze zakątki Androida 11, co faktycznie doprowadziło do wielu ciekawych rozmów o przyszłości. Dowiesz się o nadchodzącej przeróbce stosu Bluetooth i będzie dużo mówić o modułowości i łatwości aktualizacji (mam nadzieję, że plany jednego dnia pozwolą na aktualizację jądra Linuksa i API programistów tak łatwo, jak to tylko możliwe Pobierz aktualizację aplikacji).
Ten wywiad odbył się na kilka dni przed premierą Androida 11, który stał się ostateczny 8 września. Jak zwykle zostało to nieznacznie zredagowane ze względu na przejrzystość i dodam wymagane tło kursywą. Biorąc pod uwagę dziwny stan wszystkiego, kiedy wszyscy byliśmy zanurzeni w czacie wideo Google Meet, COVID był oczywistym pierwszym tematem.
Ars: Jak wszyscy radzicie sobie z COVID-19 w kraju rozwijającym się z Androidem?
Dave Burke: Dobrze. Jak wszyscy inni, kiedy przeprowadzaliśmy się z domu, było co najmniej trochę bałaganu. Musieliśmy rozwiązać wiele problemów związanych z produktywnością programistów. Wiele osób używa potężnych stacji roboczych do budowania systemu operacyjnego z telefonem podłączonym przez USB, a my chcieliśmy znaleźć sposób, aby mogli nadal korzystać ze swoich stacji roboczych, ale flashować go na telefonie podłączonym do laptopa. Wykonaliśmy więc wiele prac związanych z infrastrukturą i tak dalej, aby wszyscy mogli zacząć działać. To faktycznie wyszło całkiem nieźle. Byłem pod wrażeniem.
Google Meet też działało świetnie. Pamiętam, jak kilka lat temu pomyślałem: „Wow, Google dużo inwestuje w ten materiał wideokonferencyjny. Dlaczego nie wykorzystać czegoś komercyjnego?” Ale teraz jestem taki szczęśliwy Google stworzył własne. Wielu z nas korzysta teraz z sal spotkań, więc mamy wiele wirtualnych kanałów podobnych do Slacka, jeśli chcesz to tak nazwać. To było całkiem dobre!
To znaczy, oczywiście trudno było też nie mieć takich rzeczy jak rozmowy na korytarzu. Powiedziałbym, że na początku widzieliśmy spadek produktywności od 7 do 11 procent. Potem wydawało się, że wróciło do zdrowia, gdy ludzie się przystosowali. Zresetowaliśmy harmonogram około miesiąca tylko dlatego, że musimy dostosować ludzi do tego przejścia. Branża również potrzebowała czasu, aby się przystosować, ale tak, w większości działa. Oczywiście myślę, że wszyscy chcielibyśmy wrócić do pracy.
Iliyan Malchev:: Myślę, że największym zmartwieniem związanym z COVID było po prostu: „Czy infrastruktura dostawcy usług internetowych poradzi sobie z tak ogromnym wzrostem zużycia mediów?” Wydaje się, że w większości się to utrzymywało.
Burke: Inną rzeczą, nad którą pracowałem, jest Powiadomienia o ekspozycji od AppleTo było dość intensywne. Budujemy zdolność sprawdzania, czy zbliżyłeś się do kogoś, kto uzyskał pozytywny wynik testu na obecność COVID-19. Zrobiliśmy to szybko, więc była to ekscytująca dodatkowa druga praca.
O tak, powiadomienia Androida dotyczące ekspozycji na COVID będą transmitowane na smartfon w pobliżu. Interfejsy API do tego zostały wysłane w usługach Google Play i wprowadzone na rynku praktycznie co dwa miliardy urządzeń Google Play z systemem Android. Pełne aktualizacje systemu operacyjnego mogą zależeć od producenta urządzenia, ale aktualizacje Usług Play wpływają na każdy telefon z zainstalowanym Sklepem Play, czyli w zasadzie na każdy telefon z Androidem poza Chinami.
Obecny problem ze śledzeniem COVID polega na tym, że poszczególne organizacje zdrowotne muszą tworzyć aplikacje, które integrują się z tym interfejsem API. W Stanach Zjednoczonych jest to zwykle rząd Twojego stanu. Stany tak naprawdę nie mają wykwalifikowanych programistów aplikacji na wezwanie w przypadku czegoś takiego (czy twoja lokalna witryna DMV jest tak katastrofalna jak moja?). Jak dotąd, tylko sześć stanów Obecnie mam aplikacje COVID. Wygląda na to, że to kolejny krok Google, aby to naprawić Twórz aplikacje samodzielnieDlatego stany muszą tylko dostarczyć plik konfiguracyjny, aby działał.
Aktualizacje kierownika projektu
Project Mainline, znany również jako „Aktualizacje systemu Google Play” jedna z największych zmian za jakiś czas dostać się na Androida. Ta funkcja została po raz pierwszy wprowadzona w systemie Android 10 i jest ważnym krokiem w modularyzacji Androida. Firma Mainline dodała nowy typ pliku „APEX”, aby spakować podstawowe komponenty systemu w celu łatwej aktualizacji za pośrednictwem Sklepu Play. Wcześniej Sklep Play dostarczał tylko pliki APK, które, ponieważ zostały utworzone dla aplikacji innych firm, miały różnego rodzaju zabezpieczenia i ograniczenia funkcjonalne, które nie działałyby w przypadku podstawowych składników systemu. Pliki APEX mogą pochodzić tylko od Google lub twojego producenta OEM, więc oferują o wiele więcej mocy i uruchamiania podczas uruchamiania. Na przykład pliki APEX mogą aktualizować strukturę aplikacji, co nigdy nie byłoby możliwe w przypadku aplikacji.
Mainline dotyczyło również zaangażowania producentów OEM, a Google przejął większą część kodu podstawowego Androida – kodu, który wcześniej był dostępny dla producentów OEM do dostosowania. Google musiał usiąść ze wszystkimi producentami OEM (wyobrażam sobie, że te spotkania wyglądają tak Senat Galaktyczny) i zapytaj: „Czy naprawdę musisz dostosować sposób działania mechanizmu rozpoznawania nazw DNS?” Jeśli wszystkie odpowiedzi brzmią „nie”, staje się on głównym modułem i wszyscy zgadzają się wysłać ten sam kod. W przypadku problemów z dostosowywaniem Google i producenci OEM współpracują, aby umieścić kod w module, z którego każdy może korzystać.
To był Android 10. W przypadku Androida 11 ostatnia wiadomość, którą otrzymaliśmy w Mainline, pochodziła od Google pierwszy blog deweloperski pozt od lutego, kiedy w Mainline pojawiło się „12 nowych modułów”. Nie zawierało o wiele więcej szczegółów.
Ars: Twój post na blogu mówi, że w Androidzie 11 jest „12 nowych modułów Apex”, ale czym one właściwie są?
Burke: Tak, jest kilka. Mam tutaj listę: statsd, nasz demon do zbierania statystyk, a to ma sens, ponieważ chcesz zunifikowanej telemetrii. Tethering Wi-Fi to nowy moduł. NNAPI – interfejs API sieci neuronowej – to kolejny obszar, który szybko się zmienia, gdy uczymy się więcej technik uczenia maszynowego. ADBD. Transmisja komórkowa. Istnieje kilka modułów Wi-Fi. Materiał rozszerzający SDK. Aha, a także dostawca mediów obsługujący obszar przechowywania, więc chcieliśmy, aby można go było uaktualnić.
Myślę, że obecnie w sumie jest 21 modułów i myślę, że prawdopodobnie ważniejsza niż rzeczywiste moduły jest praca włożona w infrastrukturę, aby były one możliwe. Mamy bardzo zaawansowane zarządzanie wersjami. Mamy krótkoterminową, długoterminową telemetrię. Mamy możliwości AB. Mamy migawkę systemu plików w wycofywaniu. A druga część to oczywiście zmiana kulturowa dla programistów, aby nauczyli się pisać w module, który jest stale aktualizowany. Jestem bardzo podekscytowany fundamentem, który położyliśmy bardziej niż konkretne moduły, ponieważ więcej ma nadejść.
Ars: Ponieważ mówię o „więcej w przyszłości”, chciałem zapytać o „moduł rozszerzający SDK”, który brzmi dość istotnie. Czy to jest tak interesujące, jak sobie wyobrażam? Czy chcesz udostępnić nowe poziomy API w Sklepie Play?
OK, przestój, gdy wyjaśniam to pytanie: wersje Androida są identyfikowane dla Ciebie i dla mnie na podstawie ich numerów wersji, ale system Android wewnętrznie identyfikuje się z aplikacjami za pomocą numeru wymiennie określanego jako „poziom SDK” lub „poziom interfejsu API”. Wszystkie nowe funkcje, uprawnienia i ograniczenia bezpieczeństwa w Androidzie 11 są dostępne dla aplikacji na „Poziomie API 30”. W przeszłości poziomy API zawsze rosły o +1 z każdą wersją Androida (nawet z mniejszymi wersjami 0.1) dlaczego jesteśmy na poziomie 30).
Spekuluje się, że moduł SDK byłby w stanie dostarczyć programistom zupełnie nowe poziomy SDK, w tym nowe funkcje, bez konieczności przeprowadzania pełnej aktualizacji systemu operacyjnego. Byłoby to absolutnie niewiarygodne dla Androida, ponieważ pełne aktualizacje systemu operacyjnego są tak słabo dystrybuowane i mają małą bazę użytkowników, że programiści niechętnie obsługują nowe interfejsy API, jeśli nikt nie może ich uruchomić. Poziomy API za pośrednictwem Google Play byłyby jak wdrożenie usług Play, w których nowa funkcja może dotrzeć do dwóch miliardów urządzeń praktycznie z dnia na dzień. Wydaje się to również bardzo trudne do uwierzenia, ponieważ nowy interfejs API programisty może uderzyć w dowolną część systemu operacyjnego. Jak możesz to zaktualizować za pomocą jednego modułu?
Burke: Myślę, że cała idea ulepszalnych modułów systemu operacyjnego to dość głęboka zmiana, więc wszystko jest całkiem interesujące. Ale tak, w Androidzie 11 – Android R, jak to nazywamy – mamy możliwość tworzenia nowych systemowych API i udostępniania ich w głównych modułach. To jest w R. In S. [Android S would be version 12], Zamierzamy faktycznie móc udostępniać nowe publiczne interfejsy API w głównych modułach, więc tak naprawdę po prostu poszerzamy zakres tego, czym jest moduł i co można aktualizować.
Ars: To musi być bardziej ograniczone niż pełna aktualizacja systemu operacyjnego, prawda? Jak dobrze to działa w porównaniu z OTA? Brzmi niesamowicie, ale też dość ciężko.
Burke: Tak, myślę, że jest wcześnie. Masz rację. Wyzwaniem związanym z aktualizowalnymi modułami jest to, że moduł zostanie zaktualizowany, ale nie można zakładać, że wszystko wokół niego zostanie zaktualizowane. Musisz więc być ostrożny i mieć stabilne wewnętrzne interfejsy API lub granice między tymi interfejsami.
Więc tak, nadal pracujemy. Myślę, że naprawdę chcesz, aby API po prostu połączyło się z innym modułem, który można aktualizować, w przeciwnym razie nie ma to żadnego sensu. Zbudujemy umiejętność i zobaczymy, do czego jej użyjemy.