Obsługa architektury 64-bitowej

Aplikacje opublikowane w Google Play muszą obsługiwać architekturę 64-bitową. Dodanie 64-bitowej wersji aplikacji zwiększa wydajność i pozwala skonfigurować ją pod kątem urządzeń z oprogramowaniem 64-bitowym.

Wykonując poniższe czynności, masz pewność, że Twoja aplikacja 32-bitowa będzie obsługiwać urządzenia 64-bitowe.

Oceń aplikację

Jeśli Twoja aplikacja używa tylko kodu napisanego w języku Java lub w Kotlin, w tym wszystkich bibliotek i pakietów SDK, obsługuje urządzenia 64-bitowe. Jeśli aplikacja korzysta z kodu natywnego lub nie masz co do tego pewności, oceń ją.

Szybkie sprawdzanie stanu

Otwórz Konsolę Play i sprawdź istniejące wersje, by sprawdzić, czy są zgodne.

Jeśli wystąpią problemy z wymaganiami dotyczącymi kodu 64-bitowego, Konsola Play wyświetli ostrzeżenia dotyczące wersji roboczych. Poniższy obraz jest przykładem.

Jeśli pojawi się alert, wykonaj te czynności, aby zapewnić zgodność aplikacji z urządzeniami 64-bitowymi.

Czy Twoja aplikacja używa kodu natywnego?

Aplikacja korzysta z kodu natywnego, jeśli:

  • Użycie w aplikacji dowolnego kodu w C/C++ (natywnego).
  • Linki do bibliotek natywnych innych firm.
  • Jest tworzone za pomocą zewnętrznego kreatora aplikacji, który korzysta z bibliotek natywnych.

Czy Twoja aplikacja zawiera biblioteki 64-bitowe?

Sprawdź strukturę pliku APK. Po utworzeniu plik APK jest spakowany ze wszystkimi bibliotekami natywnymi potrzebnymi aplikacji. Biblioteki natywne są przechowywane w różnych folderach na podstawie interfejsu ABI. Nie jest to wymagane do obsługi każdej architektury 64-bitowej, ale dla każdej natywnej architektury 32-bitowej musisz dodać odpowiednią architekturę 64-bitową.

W przypadku architektury ARM biblioteki 32-bitowe znajdują się w regionie armeabi-v7a. Jego odpowiednikiem w wersji 64-bitowej jest arm64-v8a.

W przypadku architektury x86 szukaj x86 dla wersji 32-bitowej i x86_64 dla wersji 64-bitowej.

Sprawdź, czy masz biblioteki natywne w obu tych folderach. Podsumowując:

Platforma Folder bibliotek 32-bitowych Folder bibliotek 64-bitowych
WŁĄCZ WYKRYWANIE lib/armeabi-v7a lib/arm64-v8a
x86 lib/x86 lib/x86_64

Pamiętaj, że w zależności od aplikacji w każdym folderze może znajdować się dokładnie ten sam zestaw bibliotek. Jego celem jest zapewnienie poprawnego działania aplikacji w środowisku tylko 64-bitowym.

W typowym przypadku plik APK lub pakiet utworzony dla architektur 32-bitowych i 64-bitowych zawiera foldery obu interfejsów ABI, z których każdy zawiera odpowiedni zestaw bibliotek natywnych. Jeśli wersja 64-bitowa nie jest obsługiwana, może pojawić się folder z 32-bitowym interfejsem ABI, a nie folder 64-bitowy.

Poszukaj bibliotek natywnych przy użyciu Analizatora plików APK

Analizator plików APK to narzędzie, które pozwala ocenić różne aspekty utworzonego pliku APK. Użyj go, aby znaleźć wszystkie biblioteki natywne i upewnić się, że są dostępne biblioteki 64-bitowe.

  1. Otwórz Android Studio i otwórz dowolny projekt.
  2. W menu wybierz Utwórz > Analizuj plik APK...

    uruchom analizator plików APK

  3. Wybierz plik APK, który chcesz ocenić.

  4. Poszukaj w folderze lib, w którym znajdują się pliki „.so”. Jeśli ich nie ma, aplikacja obsługuje urządzenia 64-bitowe i nie musisz nic robić. Jeśli widzisz armeabi-v7a lub x86, masz biblioteki 32-bitowe.

  5. Sprawdź, czy w folderze arm64-v8a lub x86_64 masz podobne pliki „.so”.

    uruchom analizator plików APK

  6. Jeśli nie masz żadnych bibliotek arm64-v8a ani x86_64, zaktualizuj proces kompilacji, aby zacząć tworzyć i pakować te artefakty w swoim pliku APK.

  7. Jeśli obie biblioteki są już w pakiecie, możesz przejść od razu do przetestowania aplikacji na sprzęcie 64-bitowym.

Wyszukaj biblioteki natywne, rozpakowując pliki APK

Pliki APK mają strukturę podobną do plików ZIP. Wyodrębnij plik APK za pomocą wiersza poleceń lub innego narzędzia do wyodrębniania. W zależności od używanego narzędzia może być konieczna zmiana nazwy pliku na .zip.

Przejrzyj wyodrębnione pliki zgodnie z powyższymi wskazówkami, aby określić, czy Twoja aplikacja obsługuje urządzenia 64-bitowe. Oto przykładowe polecenie możesz uruchomić z poziomu wiersza poleceń:

:: Command Line
> zipinfo -1 YOUR_APK_FILE.apk | grep \.so$
lib/armeabi-v7a/libmain.so
lib/armeabi-v7a/libmono.so
lib/armeabi-v7a/libunity.so
lib/arm64-v8a/libmain.so
lib/arm64-v8a/libmono.so
lib/arm64-v8a/libunity.so

W tym przykładzie zauważymy obecność bibliotek armeabi-v7a i arm64-v8a, co oznacza, że aplikacja obsługuje architektury 64-bitowe.

Tworzenie aplikacji przy użyciu bibliotek 64-bitowych

Poniżej znajdziesz instrukcje tworzenia bibliotek 64-bitowych. Pamiętaj, że te kroki obejmują tylko kod do tworzenia kodu i biblioteki, które możesz skompilować ze źródła.

Twórz za pomocą Android Studio lub Gradle

Większość projektów Android Studio używa Gradle jako bazowego systemu kompilacji, więc ta sekcja dotyczy obu przypadków. Aby włączyć kompilacje kodu natywnego, dodaj arm64-v8a lub x86_64 (w zależności od architektury) do ustawienia ndk.abiFilters w pliku „build.gradle” aplikacji:

Odlotowy

// Your app's build.gradle
plugins {
  id 'com.android.app'
}

android {
   compileSdkVersion 27
   defaultConfig {
       appId "com.google.example.64bit"
       minSdkVersion 15
       targetSdkVersion 28
       versionCode 1
       versionName "1.0"
       ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
// ...

Kotlin

// Your app's build.gradle
plugins {
    id("com.android.app")
}

android {
    compileSdkVersion(27)
    defaultConfig {
        appId = "com.google.example.64bit"
        minSdkVersion(15)
        targetSdkVersion(28)
        versionCode = 1
        versionName = "1.0"
        ndk {
            abiFilters += listOf("armeabi-v7a","arm64-v8a","x86","x86_64")
        }
// ...

Tworzenie kompilacji za pomocą CMake

Jeśli aplikacja została skompilowana za pomocą CMake, możesz ją utworzyć pod kątem 64-bitowego interfejsu ABI, przesyłając parametr arm64-v8a do parametru „-DANDROID_ABI”:

:: Command Line
> cmake -DANDROID_ABI=arm64-v8a … or
> cmake -DANDROID_ABI=x86_64 …

Tworzenie kompilacji za pomocą ndk

Jeśli aplikacja została skompilowana za pomocą narzędzia ndk-build, możesz ją kompilować pod kątem 64-bitowych interfejsów ABI, modyfikując plik „Application.mk” za pomocą zmiennej APP_ABI:

APP_ABI := armeabi-v7a arm64-v8a x86 x86_64

Przenoszenie kodu 32-bitowego na 64-bitowy

Jeśli Twój kod działa już na komputerze lub iOS, nie musisz wykonywać żadnych dodatkowych czynności na Androidzie. Jeśli po raz pierwszy tworzysz kod dla systemu 64-bitowego, musisz przede wszystkim rozwiązać ten problem, bo wskaźniki nie pasują już do 32-bitowych typów liczb całkowitych, takich jak int.

Zaktualizuj kod, który przechowuje wskaźniki takich typów jak int, unsigned lub uint32_t. W systemach Unix wartość long odpowiada rozmiarowi wskaźnika, ale nie jest to prawdą w systemie Windows. Zamiast tego używaj typów ujawniających intencje uintptr_t lub intptr_t. Aby zapisać różnicę między dwoma wskaźnikami, użyj typu ptrdiff_t.

Nawet w przypadku znaków innych niż wskaźniki zawsze lepiej wybrać konkretne typy liczb całkowitych o stałej szerokości zdefiniowane w tagu <stdint.h> zamiast typów o niestałej szerokości, np. int lub long.

Użyj tych flag kompilatora, aby wychwycić przypadki, gdy Twój kod nieprawidłowo konwertuje wskaźniki na liczby całkowite:

-Werror=pointer-to-int-cast
-Werror=int-to-pointer-cast
-Werror=shorten-64-to-32

Ten sam problem dotyczy klas Java z polami int, które przechowują wskaźniki do obiektów C/C++. Wyszukaj jint w źródle JNI i pamiętaj, aby przełączyć się na long po stronie Javy i jlong po stronie C++.

W przypadku kodu 64-bitowego deklaracje funkcji niejawnych są o wiele bardziej niebezpieczne. W C/C++ zakłada się, że typem zwracanym niejawnie zadeklarowanej funkcji (czyli funkcji, dla której kompilator nie widzi deklaracji) jest int. Jeśli rzeczywisty typ zwracanego przez Twoją funkcję jest wskaźnikiem, działa to w systemie 32-bitowym, w którym mieści się on w liczbie całkowitej. W systemie 64-bitowym kompilator pomija górną połowę wskaźnika. Na przykład:

// This function returns a pointer:
// extern char* foo();

// If you don't include a header that declares it,
// when the compiler sees this:
char* result = foo();

// Instead of compiling that to:
result = foo();

// It compiles to something equivalent to:
result = foo() & 0xffffffff;

// Which will then cause a SIGSEGV if you try to dereference `result`.

Ta flaga kompilatora zmienia niejawne ostrzeżenia dotyczące deklaracji funkcji w błędy, co ułatwia znajdowanie i rozwiązywanie tego problemu:

-Werror=implicit-function-declaration

Jeśli masz wbudowany program Assembler, przepisz go lub użyj zwykłej implementacji C/C++.

Jeśli masz zakodowane na stałe rozmiary typów (np. 8 lub 16 bajtów), zastąp je odpowiednikiem wyrażenia sizeof(T), takim jak sizeof(void*).

Jeśli musisz warunkowo skompilować inny kod dla wersji 32-bitowej niż 64-bitowej, możesz użyć #if defined(__LP64__) w przypadku ogólnych różnic 32/64 lub __arm__, __aarch64__ (arm64), __i386__ (x86) i __x86_64__ dla określonych architektur obsługiwanych przez Androida.

Dostosuj ciągi formatów dla funkcji printf lub scanf, ponieważ tradycyjne specyfikatory formatu nie umożliwiają określania typów 64-bitowych w sposób odpowiedni zarówno dla urządzeń 32-bitowych, jak i 64-bitowych. Makra PRI i SCN w <inttypes.h> rozwiązują ten problem, PRIxPTR i SCNxPTR do zapisywania i odczytywania wskaźników szesnastkowych, a PRId64 i SCNd64 do łatwego zapisywania i odczytywania wartości 64-bitowych.

Podczas zmiany może być konieczne użycie 1ULL, aby uzyskać 64-bitową stałą do przesunięcia, zamiast niej 1, która ma tylko 32 bity.

Ograniczanie zwiększania rozmiaru za pomocą pakietu Android App Bundle

Dodanie obsługi architektury 64-bitowej do aplikacji może spowodować zwiększenie rozmiaru pliku APK. Zdecydowanie zalecamy skorzystanie z funkcji pakietu Android App Bundle, która pozwala ograniczyć wpływ umieszczenia w tym samym pliku APK zarówno 32-, jak i 64-bitowego kodu natywnego.

Deweloperzy gier

Trzy najczęściej używane wyszukiwarki obsługują języki 64-bitowe:

  • Niesamowite od 2015 roku
  • Cocos2d od 2015 roku
  • Unity od 2018 roku

Deweloperzy na Unity

Uaktualnij do obsługujących tę funkcję

Unity zapewnia obsługę 64-bitową w wersjach 2018.2 i 2017.4.16.

Jeśli używasz wersji Unity, która nie obsługuje wersji 64-bitowej, określ wersję, do której chcesz przejść, i postępuj zgodnie z przygotowanymi przez Unity wskazówkami dotyczącymi migracji środowiska. W ten sposób zapewnisz, że aplikacja zostanie uaktualniona do wersji, w której będzie można tworzyć biblioteki 64-bitowe. Unity zaleca dostęp do najnowszych funkcji i aktualizacji przez uaktualnienie edytora do najnowszej wersji LTS.

W tej tabeli znajdziesz omówienie różnych wersji Unity i tego, co musisz zrobić:

Wersja Unity Wersja obsługuje wersję 64-bitową? Zalecane działania

2020.x

✔️

Sprawdź, czy ustawienia kompilacji zwracają biblioteki 64-bitowe.

2019.x

✔️

Sprawdź, czy ustawienia kompilacji zwracają biblioteki 64-bitowe.

2018.4 (LTS)

✔️

Sprawdź, czy ustawienia kompilacji zwracają biblioteki 64-bitowe.

2018,3

✔️

Sprawdź, czy ustawienia kompilacji zwracają biblioteki 64-bitowe.

2018,2

✔️

Sprawdź, czy ustawienia kompilacji zwracają biblioteki 64-bitowe.

1 2018 r.

Ma eksperymentalną obsługę 64-bitową.

2017.4 (LTS)

✔️

Obsługa od 16.04.2017 r. Sprawdź, czy ustawienia kompilacji zwracają biblioteki 64-bitowe.

2017,3

▶️

Uaktualnij do wersji obsługującej wersję 64-bitową.

2017,2

▶️

Uaktualnij do wersji obsługującej wersję 64-bitową.

2017.10

▶️

Uaktualnij do wersji obsługującej wersję 64-bitową.

<=5,6

▶️

Uaktualnij do wersji obsługującej wersję 64-bitową.

Zmień ustawienia kompilacji, aby wyświetlać biblioteki 64-bitowe

Jeśli używasz wersji Unity, która obsługuje 64-bitowe biblioteki Androida, możesz wygenerować 64-bitową wersję aplikacji, dostosowując ustawienia kompilacji. Użyj backendu IL2CPP jako backendu dla skryptów. Aby skonfigurować projekt w Unity pod kątem kompilacji 64-bitowej, wykonaj te czynności:

  1. Otwórz Ustawienia kompilacji i sprawdź, czy kompilujesz na Androida – sprawdź, czy symbol Unity znajduje się obok pozycji Android w sekcji Platforma. 1. Jeśli symbol Unity nie znajduje się obok platformy Android, wybierz Android i kliknij Przełącz platformę.
  2. Kliknij Ustawienia odtwarzacza.

    Ustawienia odtwarzacza w Unity

  3. Otwórz Panel ustawień odtwarzacza > Ustawienia Androida > Inne ustawienia > Konfiguracja.

  4. Ustaw Backend obsługi skryptów na IL2CPP.

  5. Zaznacz pole wyboru Docelowa architektura > ARM64.

    ustawianie architektur docelowych w Unity

  6. Buduj jak zwykle.

Pamiętaj, że tworzenie komponentów na potrzeby ARM64 wymaga, aby wszystkie zasoby były tworzone specjalnie z myślą o tej platformie. Postępuj zgodnie ze wskazówkami Unity dotyczącymi zmniejszania rozmiaru pliku APK i rozważ skorzystanie z funkcji Android App Bundle, która pomoże ograniczyć ten wzrost rozmiaru.

Zgodność wielu plików APK i wersji 64-bitowej

Jeśli publikujesz aplikację za pomocą obsługi wielu plików APK w Google Play, pamiętaj, że zgodność z wymaganiami dotyczącymi kodu 64-bitowego jest oceniana na poziomie wersji. Wymóg wersji 64-bitowej nie dotyczy jednak plików APK ani pakietów aplikacji, które nie są rozpowszechniane na urządzeniach z Androidem 9 Pie lub nowszym.

Jeśli jeden z plików APK został oznaczony jako niezgodny z zasadami, ale jest we wcześniejszej wersji i nie da się go zapewnić, możesz dodać atrybut maxSdkVersion="27" w elemencie uses-sdk w pliku manifestu tego pliku APK. Ten plik APK nie jest dostarczany na urządzenia z Androidem 9 Pie lub nowszym i nie blokuje już zgodności z zasadami.

RenderScript i zgodność z wersją 64-bitową

Jeśli Twoja aplikacja korzysta z interfejsu RenderScript i została skompilowana przy użyciu wcześniejszej wersji narzędzi na Androida, mogą wystąpić problemy ze zgodnością z 64-bitowymi wersjami tej aplikacji. W przypadku narzędzi do kompilacji starszych niż 21.0.0 kompilator może wygenerować kod bitowy i zapisać go w zewnętrznym pliku .bc. Te starsze pliki .bc nie są już obsługiwane przez architekturę 64-bitową, więc obecność pliku w pakiecie APK powoduje problem ze zgodnością.

Aby rozwiązać ten problem, usuń wszystkie pliki .bc z projektu, uaktualnij środowisko do build-tools-21.0.0 lub nowszego i ustaw renderscriptTargetApi w Android Studio na 21+. Dzięki temu kompilator nie będzie emitował plików .bc. Następnie ponownie skompiluj aplikację, sprawdź, czy jest w niej .bc plików, i prześlij ją do Konsoli Play.

Testowanie aplikacji na sprzęcie 64-bitowym

64-bitowa wersja aplikacji powinna mieć tę samą jakość i te same funkcje co wersja 32-bitowa. Przetestuj swoją aplikację, by mieć pewność, że użytkownicy jej najnowszych wersji 64-bitowych będą mogli z niej korzystać wygodnie.

Urządzenia 64-bitowe

W miarę możliwości zalecamy przetestowanie aplikacji w rygorystycznym, 64-bitowym środowisku, przy użyciu jednej z tych opcji:

Google Pixel z obrazem systemu tylko 64-bitowym

Aby ułatwić tworzenie i testowanie aplikacji, na niektórych urządzeniach Pixel udostępniamy specjalne obrazy systemu w rygorystycznym środowisku 64-bitowym. Te 64-bitowe obrazy były pierwotnie udostępniane wraz ze standardowymi obrazami systemu fabrycznego dla wersji testowej Androida 13 i 14, ale nadal możesz ich używać do testowania zgodności aplikacji z wersją 64-bitową.

Pobieranie obrazu tylko 64-bitowego

Podobnie jak w przypadku obrazów systemu fabrycznego, możesz poddać się weryfikacji w wersji 64-bitowej na urządzeniu, korzystając z narzędzia Android Flash Tool lub ręcznie uruchamiając aktualizację, zgodnie z opisem w poniższych sekcjach.

Flash na urządzeniu za pomocą Android Flash Tool

Android Flash Tool pozwala bezpiecznie zainstalować obraz systemu na obsługiwanym urządzeniu Pixel. Android Flash Tool działa z każdą przeglądarką obsługującą WebUSB, np. Chrome oraz Edge 79 i nowszymi wersjami.

Android Flash Tool przeprowadzi Cię krok po kroku przez proces aktualizacji urządzenia – nie musisz mieć żadnych zainstalowanych żadnych narzędzi. Jednak musisz je odblokować i włączyć debugowanie USB w Opcjach programisty. Pełne instrukcje znajdziesz w dokumentacji Android Flash Tool.

Podłącz urządzenie przez USB, a następnie w zależności od typu obrazu systemu, który chcesz załadować, przejdź do Android Flash Tool za pomocą jednego z tych linków i postępuj zgodnie ze wskazówkami na ekranie:

Ręczne podłączanie lampy błyskowej

Możesz też pobrać najnowszy obraz systemu i ręcznie zainstalować go na urządzeniu. W tej tabeli możesz pobrać obraz systemu urządzenia testowego. Ręczne wgrywanie pamięci urządzenia przydaje się, gdy potrzebujesz dokładnej kontroli nad środowiskiem testowym lub gdy musisz często ponownie instalować urządzenia, na przykład podczas testów automatycznych.

Po utworzeniu kopii zapasowej danych z urządzenia i pobraniu odpowiedniego obrazu systemu możesz załadować obraz na urządzenie.

W każdej chwili możesz wrócić do najnowszej kompilacji publicznej.

64-bitowe obrazy fabryczne w Androidzie 14 (beta 5.3)

Obrazy te umożliwiają testowanie zgodności z aplikacjami w wersji 64-bitowej w rygorystycznym środowisku 64-bitowym. Te 64-bitowe konfiguracje są przeznaczone tylko dla programistów.

Urządzenie Link do pobrania Suma kontrolna SHA-256
Pixel 4a (5G) 7e6731fab811ae389f5ff882d5c5a2b8b942b8363b22bbcc038b39d7c539e60a
Pixel 5 c4da6a19086a02f2cd2fa7a4054e870916954b8e5a61e9a07ee942c537e4b45a
Pixel 6 98943384284cbc7323b8867d84c36151757f67ae7633012fb69cb5d6bec2b554
Pixel 6 Pro 67ec40be5bd05a40fa5dabc1ce6795aae75d1904193d52e2da00425ed7cb895b
64-bitowe obrazy fabryczne w Androidzie 13 (QPR3 Beta 3.2)

Obrazy te umożliwiają testowanie zgodności z aplikacjami w wersji 64-bitowej w rygorystycznym środowisku 64-bitowym. Te 64-bitowe konfiguracje są przeznaczone tylko dla programistów.

Urządzenie Link do pobrania Suma kontrolna SHA-256
Pixel 4a (5G) b4be40924f62c3c2b3ed20a9f7fa4303aa9c39649d778eb96f86c867fe3ae59a
Pixel 5 6e5e027a4f64f9f786db9bb69d50d1a551c3f6aad893ae450e1f8279ea1b761a
Pixel 6 becb9b81a5bddad67a4ac32d30a50dcb372b9d083cb7c046e5180510e479a0b8
Pixel 6 Pro b0ef544ed2312ac44dc827f24999281b147c11d76356c2d06b2c57a191c60480
Wróć do publicznej kompilacji

Możesz użyć narzędzia Android Flash, by załadować fabryczny obraz systemu lub uzyskać fabryczny obraz systemu ze strony Obrazy fabryczne dla urządzeń Nexus i Pixel, a następnie ręcznie załadować ten obraz na urządzeniu.

Emulator Androida

Od Androida 12 (poziom interfejsu API 31) obrazy systemu emulatora Androida są tylko 64-bitowe. Utwórz urządzenie wirtualne z Androidem (AVD) przy użyciu obrazu systemu z Androidem 12 (poziom interfejsu API 31) lub wyższym, aby uzyskać rygorystyczne, 64-bitowe środowisko do testowania aplikacji.

Inne opcje urządzenia

Jeśli nie masz jednego z tych urządzeń lub nie możesz użyć emulatora Androida, najlepszym rozwiązaniem jest użycie urządzenia obsługującego 64 bity, np. Google Pixel lub innych flagowych urządzeń innych producentów.

Instalowanie i testowanie aplikacji

Najłatwiejszym sposobem przetestowania pliku APK jest zainstalowanie aplikacji przy użyciu Android DebugBridge (adb). W większości przypadków możesz podać --abi jako parametr, aby wskazać, które biblioteki mają zostać zainstalowane na urządzeniu. Spowoduje to zainstalowanie na urządzeniu tylko bibliotek 64-bitowych.

:: Command Line
# A successful install:
> adb install --abi armeabi-v7a YOUR_APK_FILE.apk
Success

# If your APK does not have the 64-bit libraries:
> adb install --abi arm64-v8a YOUR_APK_FILE.apk
adb: failed to install YOUR_APK_FILE.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]

# If your device does not support 64-bit, an emulator, for example:
> adb install --abi arm64-v8a YOUR_APK_FILE.apk
ABI arm64-v8a not supported on this device

Po zainstalowaniu aplikacji przetestuj ją w zwykły sposób, aby mieć pewność, że jakość jest taka sama jak w wersji 32-bitowej.

Sprawdź, czy nie występują znane problemy ze zgodnością

W trakcie testowania sprawdź, czy w aplikacji nie występują podane niżej problemy, które mogą mieć wpływ na działanie aplikacji na urządzeniach 64-bitowych. Nawet jeśli aplikacja nie zależy bezpośrednio od bibliotek, których dotyczy problem, biblioteki i pakiety SDK innych firm mogą znaleźć się w zależnościach aplikacji.

Moduł SoLoader

Jeśli używasz natywnego pakietu SDK do wczytywania kodu SoLoader, zaktualizuj go do wersji 0.10.4 lub nowszej. Jeśli Twoja aplikacja korzysta z pakietów SDK zależnych od SoLoader, pamiętaj o zaktualizowaniu tych pakietów do najnowszej wersji stabilnej.

SoLoader w wersji 0.9.0 i starszych zakłada, że biblioteki systemowe znajdują się w /vendor/lib:/system/lib. Tego błędu nie można zaobserwować na urządzeniach takich jak Pixel 7, gdzie występuje ścieżka, ale to założenie powoduje awarie na urządzeniach, które mają w /vendor/lib64:/system/lib64 tylko biblioteki systemowe.

Więcej informacji o usuwaniu tego i innych problemów spowodowanych przez SoLoader znajdziesz w tej sekcji w Centrum pomocy Google.

OpenSSL

Jeśli używasz biblioteki OpenSSL, zaktualizuj OpenSSL do wersji 1.1.1i lub nowszej. Jeśli Twoja aplikacja korzysta z pakietów SDK obsługujących komunikację za pomocą protokołu HTTPS lub z innych pakietów zależnych od OpenSSL, pamiętaj o zaktualizowaniu pakietu SDK do najnowszej wersji korzystającej z jego nowszej wersji. W razie potrzeby skontaktuj się z dostawcą pakietu SDK.

ARMv8.3 PAC zapewnia integralność wspomaganego sprzętowo procesu kontroli przez uwierzytelnianie wskaźników w czasie działania. Wcześniejsze wersje OpenSSL nieprawidłowo używają tych funkcji, powodując awarię działania na wszystkich urządzeniach z procesorami opartymi na ARMv8.3a i nowszych.

Więcej informacji o rozwiązywaniu tego i innych problemów spowodowanych przez OpenSSL znajdziesz w artykule na ten temat w Centrum pomocy Google.

BTI

Instrukcje dotyczące kierowania (BTI) w architekturze ARM w wersji 8.5 lub nowszej ułatwiają ochronę przed atakami typu JOP. Wcześniejsze wersje pakietów SDK do zaciemniania kodu, które rozgałęziają się na losowe przesunięcia bibliotek utworzonych z BTI, mogą powodować awarie aplikacji. Ponieważ instrukcje są zakodowane jako WSKAZÓWKI, błędu nie można zaobserwować na urządzeniach, które nie obsługują BTI.

Opublikuj

Gdy uznasz, że aplikacja jest już gotowa, opublikuj ją jak zwykle. Jak zawsze postępuj zgodnie ze sprawdzonymi metodami wdrażania aplikacji. Zalecamy skorzystanie z ścieżek zamkniętych testów, aby wdrożyć aplikację u ograniczonej liczby użytkowników i upewnić się, że jakość aplikacji jest spójna.

Tak jak przy wdrażaniu dużej aktualizacji, przed opublikowaniem aplikacji dla szerszej grupy odbiorców dokładnie ją przetestuj na urządzeniach z obsługą 64-bitową.

下载 Android 14 factory system image (64-bit-only)

您必须先接受以下条款及条件才能下载。

条款及条件

By clicking to accept, you hereby agree to the following: All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version. Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google). WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
下载 Android 14 factory system image (64-bit-only)

bramble_beta_64-upb5.230623.006-factory-7e6731fa.zip

下载 Android 14 factory system image (64-bit-only)

您必须先接受以下条款及条件才能下载。

条款及条件

By clicking to accept, you hereby agree to the following: All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version. Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google). WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
下载 Android 14 factory system image (64-bit-only)

redfin_beta_64-upb5.230623.006-factory-c4da6a19.zip

下载 Android 14 factory system image (64-bit-only)

您必须先接受以下条款及条件才能下载。

条款及条件

By clicking to accept, you hereby agree to the following: All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version. Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google). WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
下载 Android 14 factory system image (64-bit-only)

oriole_beta_64-upb5.230623.006-factory-98943384.zip

下载 Android 14 factory system image (64-bit-only)

您必须先接受以下条款及条件才能下载。

条款及条件

By clicking to accept, you hereby agree to the following: All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version. Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google). WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
下载 Android 14 factory system image (64-bit-only)

raven_beta_64-upb5.230623.006-factory-67ec40be.zip

下载 Android 13 factory system image (64-bit-only)

您必须先接受以下条款及条件才能下载。

条款及条件

By clicking to accept, you hereby agree to the following: All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version. Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google). WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
下载 Android 13 factory system image (64-bit-only)

bramble_64-t3b3.230413.009-factory-b4be4092.zip

下载 Android 13 factory system image (64-bit-only)

您必须先接受以下条款及条件才能下载。

条款及条件

By clicking to accept, you hereby agree to the following: All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version. Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google). WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
下载 Android 13 factory system image (64-bit-only)

redfin_64-t3b3.230413.009-factory-6e5e027a.zip

下载 Android 13 factory system image (64-bit-only)

您必须先接受以下条款及条件才能下载。

条款及条件

By clicking to accept, you hereby agree to the following: All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version. Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google). WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
下载 Android 13 factory system image (64-bit-only)

oriole_64-t3b3.230413.009-factory-becb9b81.zip

下载 Android 13 factory system image (64-bit-only)

您必须先接受以下条款及条件才能下载。

条款及条件

By clicking to accept, you hereby agree to the following: All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version. Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google). WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
下载 Android 13 factory system image (64-bit-only)

raven_64-t3b3.230413.009-factory-b0ef544e.zip