Zacznij tworzyć aplikacje na ChromeOS

Urządzenia z ChromeOS, takie jak Chromebooki, obsługują Sklep Google Play i aplikacje na Androida. Zakładamy, że masz już aplikację na Androida przeznaczoną na telefony lub tablety, którą chcesz zoptymalizować pod kątem Chromebooków. Aby poznać podstawy tworzenia aplikacji na Androida, przeczytaj artykuł Tworzenie pierwszej aplikacji na Androida.

Zaktualizuj plik manifestu aplikacji

Na początek zaktualizuj plik manifestu, aby uwzględnić istotne różnice w sprzęcie i oprogramowaniu między Chromebookami a innymi urządzeniami z Androidem.

Od ChromeOS w wersji M53 wszystkie aplikacje na Androida, które nie wymagają funkcji android.hardware.touchscreen, będą działać również na urządzeniach z ChromeOS, które ją obsługują. android.hardware.faketouch Aby jednak mieć pewność, że aplikacja działa na wszystkich Chromebookach, zaktualizuj plik manifestu tak, aby funkcja android.hardware.touchscreen nie była wymagana, jak pokazano w tym przykładzie.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          ... >
    <!-- Some Chromebooks don't support touch. Although not essential,
         it's a good idea to explicitly include this declaration. -->
    <uses-feature android:name="android.hardware.touchscreen"
                  android:required="false" />
</manifest>

Poszczególne urządzenia mają różne zestawy czujników, a Chromebooki mogą nie mieć wszystkich czujników dostępnych w urządzeniach mobilnych z Androidem, takich jak GPS czy akcelerometry. Jednak w niektórych przypadkach funkcjonalność czujnika jest przekazywana w inny sposób. Na przykład Chromebooki nie mają czujników GPS, ale podają dane o lokalizacji na podstawie połączeń Wi-Fi. Zapoznaj się z omówieniem czujników, aby dowiedzieć się więcej o czujnikach obsługiwanych przez platformę Androida.

Jeśli chcesz, aby aplikacja działała na Chromebookach niezależnie od dostępności czujników, zaktualizuj plik manifestu tak, aby czujniki nie były wymagane.

Niektóre funkcje oprogramowania nie są obsługiwane na Chromebookach. Na przykład aplikacje udostępniające niestandardowe edytory IME, widżety aplikacji, animowane tapety i programy uruchamiające aplikacje nie są obsługiwane i nie można ich instalować na Chromebookach. Pełną listę funkcji oprogramowania nieobsługiwanych na Chromebookach znajdziesz w artykule o niezgodnych funkcjach oprogramowania.

Zaktualizuj docelowy pakiet SDK

Zaktualizuj atrybut targetSdkVersion aplikacji do najnowszego dostępnego poziomu interfejsu API, aby korzystać ze wszystkich ulepszeń platformy Androida. Przejrzyj ulepszenia wprowadzone na platformie Androida w różnych wersjach.

Sprawdź wymagania dotyczące sieci

Na Chromebookach cały system operacyjny Android znajduje się w kontenerze, podobnie jak Docker czy LXC. Oznacza to, że Android nie ma bezpośredniego dostępu do systemowego interfejsu LAN. Zamiast tego ruch IPv4 przechodzi przez wewnętrzną warstwę translacji adresów sieciowych (NAT), a ruch pojedynczy w protokole IPv6 jest kierowany przez dodatkowy przeskok.

Wychodzące połączenia Unicast z aplikacji na Androida do internetu zwykle działają w niezmienionej formie. Połączenia przychodzące są blokowane. Pakiety multiemisji i transmisji z Androida nie są przekazywane do sieci LAN przez zaporę sieciową.

W ramach wyjątku od ograniczenia multiemisji ChromeOS udostępnia usługę, która przekazuje ruch mDNS między Androidem a interfejsem LAN. Z tego względu standardowe interfejsy API odkrywania usług sieciowych są zalecanym sposobem wykrywania innych urządzeń w segmencie sieci LAN. Po znalezieniu urządzenia w sieci LAN aplikacja na Androida może komunikować się z nim przez standardowe gniazdo pojedyncze TCP lub UDP.

Połączenia IPv4 pochodzące z Androida używają adresu IPv4 hosta ChromeOS. Aplikacja na Androida widzi prywatny adres IPv4 przypisany do interfejsu sieciowego. Połączenia IPv6 pochodzące z Androida używają innego adresu niż hosta ChromeOS, ponieważ kontener Androida ma specjalny publiczny adres IPv6.

Efektywnie korzystaj z pamięci lokalnej i w chmurze

Chromebooki umożliwiają użytkownikom łatwą migrację z jednego urządzenia na drugie. Jeśli użytkownik przestanie korzystać z jednego Chromebooka, a zacznie korzystać z innego, musi się tylko zalogować i pojawią się wszystkie jego aplikacje.

Dzięki tej funkcji utwórz kopię zapasową danych aplikacji w chmurze, aby umożliwić synchronizację między urządzeniami. Jednak bez połączenia z internetem Twoja aplikacja będzie mogła działać normalnie. Zamiast tego zapisz pracę użytkownika lokalnie, gdy urządzenie będzie offline, i zsynchronizuj je z chmurą, gdy urządzenie znów będzie online.

Chromebooki mogą być też współdzielone przez wiele osób, na przykład w szkole. Pamięć lokalna nie jest nieograniczona, dlatego całe konta (razem ze znajdującymi się na nich pamięcią) można w każdej chwili usunąć z urządzenia. Warto pamiętać o tym scenariuszu w środowiskach edukacyjnych.

Zaktualizuj biblioteki NDK

Jeśli Twoja aplikacja korzysta z bibliotek NDK na Androida, a docelowa wersja pakietu SDK to 23 lub nowsza, upewnij się, że przenoszenie tekstu zostało usunięte zarówno z bibliotek ARM, jak i x86, ponieważ są one niezgodne z Androidem 6.0 (poziom interfejsu API 23) i nowszym. Pozostawienie przenoszenia tekstu w bibliotekach NDK może również spowodować błędy zgodności z Chromebookami, zwłaszcza na urządzeniach z architekturą x86.

Opracowywanie nowych przypadków testowych aplikacji

Aby tworzyć przypadki testowe dotyczące aplikacji, najpierw musisz określić odpowiednie flagi w pliku manifestu. W szczególności rozważ ustawienie screenOrientation na unspecified. Jeśli chcesz określić orientację poziomą, użyj sensorLandscape, aby zapewnić optymalne działanie tabletu.

Jeśli masz specjalne wymagania dotyczące rozmiaru lub orientacji dla środowisk komputerowych, rozważ dodanie metatagów jako wskazówek dotyczących rozmiaru lub orientacji. Aby uwzględnić rozmiar i orientację na telefonach, określ w zamian atrybuty układ defaultHeight, defaultWidth lub minHeight.

Jeśli interesuje Cię obsługa konkretnych urządzeń wejściowych w przypadku określonych kategorii, wpisz android.hardware.type.pc, aby wyłączyć tryb zgodności urządzenia wejściowego.

Jeśli korzystasz z jakiejkolwiek sieci, upewnij się, że aplikacja może ponownie się z nią połączyć po rozwiązaniu problemu z połączeniem lub po wybudzeniu urządzenia po wybudzeniu w trybie uśpienia.

Zalecamy sprawdzenie listy przypadków testowych dotyczących aplikacji na Androida na urządzeniach z Chrome OS, których możesz użyć w swoim planie testów. Przypadki testowe obejmują typowe scenariusze, na które należy przygotować aplikacje na Androida, jeśli powinny działać na urządzeniach z ChromeOS.

Zmiana trybu wielu okien i orientacji

Działanie trybu wielu okien w ChromeOS może sprawić, że problemy z trwałością i rozpoznawaniem stanu będą bardziej oczywiste. Użyj narzędzia ViewModel, aby w razie potrzeby zapisać i przywrócić stan.

Aby przetestować trwałość stanu, zminimalizuj aplikację na jakiś czas, rozpocznij inny proces intensywnie korzystający z zasobów i przywróć aplikację do stanu, w którym została.

Przetestuj zmianę rozmiaru okna, naciskając klawisz pełnego ekranu (F4), maksymalizując i przywracając okno. Aby przetestować bezpłatną zmianę rozmiaru, najpierw włącz ją w opcjach programisty, a potem sprawdź, czy rozmiar aplikacji płynnie zmienia się bez awarii.

Jeśli Twoje urządzenie z ChromeOS obsługuje tę funkcję, przełącz się z trybu laptopa na tablet, aby sprawdzić, czy wszystko działa zgodnie z oczekiwaniami. Obróć urządzenie raz w trybie tabletu, aby przetestować zmianę orientacji, a potem wróć do trybu laptopa. Powtórz tę czynność kilka razy.

Upewnij się, że górny pasek nie zakłóca działania aplikacji przez przesunięcie elementów interfejsu użytkownika lub wprowadzanie dotyku uzależnione od lokalizacji. W przypadku urządzeń z ChromeOS upewnij się, że aplikacja nie zawiera ważnych informacji na pasku stanu.

Jeśli używasz aparatu lub innej funkcji sprzętowej, np. pióra, upewnij się, że działa ona prawidłowo podczas wprowadzania opisanych wcześniej zmian w oknie i urządzeniu.