Większość telefonów z Androidem ma chipsety ARM. Wiele urządzeń z ChromeOS korzysta jednak z procesorów x86. W przypadku aplikacji napisanych w języku Kotlin lub Java różnica ta nie ma znaczenia. W przypadku aplikacji napisanych w Android NDK, w tym tych utworzonych za pomocą silników gier, ważnym czynnikiem może być chipset w urządzeniu.
Najlepiej, aby wszystkie aplikacje z kodem Android NDK były dostarczane ze wszystkimi 4 głównymi interfejsami ABI Androida: armeabi-v7a (arm32), arm64-v8a (arm64), x86 (x86_32) i x86_64.
Zapewnia to najlepszą wydajność i najniższe zużycie baterii na każdym urządzeniu. Na przykład plik build.gradle oparty na CMake może zawierać:
externalNativeBuild {
cmake {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}Rozmiar pliku APK
Każdy interfejs ABI w monolitycznym pakiecie APK zwiększa jego rozmiar. Może to mieć wpływ na wykorzystanie miejsca na dysku przez użytkowników, rozmiar pobieranej aplikacji i może przekraczać limity rozmiaru w Sklepie Play. Najlepszym sposobem na uniknięcie tego problemu jest używanie pakietów Android App Bundle. Pakiety aplikacji umożliwiają łatwe łączenie wszystkich 4 interfejsów ABI w Android Studio, ale nie zwiększają rozmiaru pobierania dla użytkowników. Ułatwiają też korzystanie z Dynamic Delivery, dzięki czemu użytkownicy mogą pobierać duże treści z gier tylko wtedy, gdy tego potrzebują. Jeśli pakiety aplikacji nie są dla Ciebie odpowiednie, możesz użyć starszej konfiguracji obejmującej wiele plików APK, która działa podobnie.
32-bitowa a 64-bitowa
Wszystkie aplikacje na Androida muszą mieć wersję 64-bitową. Wersja 32-bitowa jest opcjonalna zarówno w przypadku urządzeń z procesorem ARM, jak i x86. Więcej informacji znajdziesz w dokumentacji dotyczącej 64-bitowej wersji Androida.
Dostarczanie tylko 64-bitowych wersji zmniejsza liczbę wymaganych wersji i powierzchnię testową, ale ogranicza też rodzaje urządzeń, na których można uruchomić grę. Na przykład z powodu innych ograniczeń sprzętowych wiele starszych Chromebooków może uruchamiać tylko 32-bitowe aplikacje na Androida, mimo że mają 64-bitowe procesory. Aby mieć pewność, że Twoja aplikacja będzie działać na tych urządzeniach, dodaj obsługę zarówno 32-bitową, jak i 64-bitową.
Uwaga: wszystkie nowe i zaktualizowane aplikacje muszą zawierać wersję 64-bitową. Sklep Play przestał udostępniać aplikacje 32-bitowe na urządzeniach, które obsługują 64-bitowe. Wiele Chromebooków obsługuje 64-bitową architekturę, dlatego zalecamy jak najszybsze zaktualizowanie aplikacji, aby zawierała wersję 64-bitową. Dzięki temu użytkownicy aplikacji na ChromeOS będą mogli z niej nadal korzystać.
Tłumaczenie ARM
Chromebooki z procesorem x86 próbują tłumaczyć kod ARM, gdy tylko jest to możliwe. Tłumaczenie spowalnia jednak działanie i zwiększa zużycie baterii. Nawet w przypadku prostych gier warto rozważyć udostępnienie kompilacji pod architekturę x86, aby zapewnić użytkownikom jak największą wygodę. Jeśli nie możesz udostępnić wersji x86, pamiętaj, że niektóre Chromebooki x86 nie mogą tłumaczyć kodu arm64. W takim przypadku w kompilacjach należy uwzględnić interfejsy ABI arm32 i arm64.
Tłumaczenie arm32 jest dostępne na wszystkich Chromebookach obsługujących Androida, ale nie wszystkie Chromebooki mogą tłumaczyć kod arm64. Oznacza to, że jeśli Twoja gra ma tylko docelowe kompilacje arm64, nie będzie dostępna na wielu urządzeniach z ChromeOS. Jeśli nie możesz wysłać plików binarnych x86, uwzględnij w kompilacjach interfejsy ABI arm32 i arm64.
| Interfejsy ABI w zestawie | Obsługa ChromeOS |
|---|---|
arm64 | Niska |
arm32/arm64 | OK (z tłumaczeniem) |
arm32/arm64/x86_32/x86_64 | Najwyższa |