W sierpniu 2020 roku na niektórych urządzeniach 64-bitowych Usługi Google Play dla AR (ARCore) przestały obsługiwać aplikacje 32-bitowe. Obsługa aplikacji z obsługą tylko 32-bitowego kodu ARCore na pozostałych urządzeniach 64-bitowych może zostać usunięta w nadchodzącej wersji ARCore bez powiadomienia. Nie ma to wpływu na aplikacje 32-bitowe obsługujące ARCore działające na urządzeniach 32-bitowych i nadal będą obsługiwane.
Jeśli opublikujesz wersję 32-bitową (np. armeabi-v7a
) aplikacji obsługującej ARCore bez publikowania odpowiedniej wersji 64-bitowej (arm64-v8a
) na urządzenia 64-bitowe, musisz zaktualizować aplikację za pomocą zgodnej wersji 64-bitowej na urządzenia 64-bitowe.
Aplikacje 32-bitowe obsługujące ARCore, które nie zostaną zaktualizowane, nie utworzą sesji ARCore i mogą spowodować awarię podczas próby uruchomienia sesji rzeczywistości rozszerzonej (AR) na urządzeniach 64-bitowych, których dotyczy problem.
Jeśli ustawisz atrybut android:use32bitAbi="true"
w elemencie AndroidManifest.xml
aplikacji, aplikacja będzie używać tylko bibliotek 32-bitowych. Wszystkie funkcje AR w Twojej aplikacji będą próbowały używać ARCore w trybie 32-bitowym. Jednak na niektórych urządzeniach 64-bitowych takie biblioteki nie są dostępne w usłudze Usługi Google Play dla AR. Bez tych bibliotek aplikacja nie może utworzyć sesji ARCore i może ulec awarii przy próbie rozpoczęcia sesji rzeczywistości rozszerzonej (AR) na urządzeniach 64-bitowych, których dotyczy problem. Ma to wpływ zarówno na natywne funkcje AR, jak i te oparte na technologii WebXR w komponencie WebView.
Wymagania dotyczące wersji 64-bitowej w Sklepie Google Play
Wymagania 64-bitowe ARCore opisane w poprzedniej sekcji dotyczą wszystkich urządzeń 64-bitowych, niezależnie od wersji Androida i poziomu interfejsu API. To wymaganie jest niezależne i nie jest związane z wymaganiami dotyczącymi kodu 64-bitowego Google Play, które weszły w życie 1 sierpnia 2019 roku. Jest ono oceniane na poziomie wersji aplikacji i dotyczy tylko plików APK lub pakietów aplikacji rozpowszechnianych na urządzeniach z Androidem 9 Pie (poziom interfejsu API 28) lub nowszym.
Omówienie obsługi interfejsu ARCore ABI
ARCore umożliwia tworzenie aplikacji, które obsługują te interfejsy ABI Androida:
32-bitowy (np.
armeabi-v7a
) i 64-bitowych (arm64-v8a
) aplikacji kierowanych na urządzenia obsługujące ARCoreAplikacje 32-bitowe (
x86
) i 64-bitowe (x86_64
), które działają w emulatorze Androida
Gdy tworzysz aplikację obsługującą ARCore, system kompilacji Androida zawiera co najmniej 1 bibliotekę natywną ARCore (lib/…/libarcore_sdk*.so
) dla interfejsów ABI Androida, na które będzie kierowana Twoja aplikacja.
Aplikacje obsługujące tylko 32-bitowe ARCore były wcześniej uruchamiane zarówno na urządzeniach 32-bitowych, jak i 64-bitowych. W sierpniu 2020 r. Usługi Google Play dla AR (ARCore) przestały uwzględniać 32-bitowe biblioteki natywne na niektórych urządzeniach 64-bitowych. W tym czasie tylko aplikacje z 32-bitową obsługą ARCore przestały działać na urządzeniach 64-bitowych, których dotyczył ten problem. W kolejnej wersji obsługa 32-bitowych aplikacji obsługujących ARCore może również zostać bez powiadomienia usunięta z pozostałych urządzeń 64-bitowych.
Aplikacje obsługujące tylko 32-bitowe ARCore, które nie zostaną zaktualizowane, nie utworzą sesji i mogą spowodować awarię podczas próby rozpoczęcia sesji rzeczywistości rozszerzonej (AR) na urządzeniach 64-bitowych, których dotyczy problem. Dotyczy to zwłaszcza:
Pakiet SDK ARCore | Szczegóły błędu tworzenia sesji |
---|---|
Pakiet SDK ARCore na Androida (NDK) |
ArSession_create i ArSession_createWithFeatures zwracają AR_ERROR_FATAL .
|
Pakiet SDK ARCore na Androida (Java) |
Konstruktory sesji, Session(Context) i Session(Context, Set<Session.Feature>) , zgłoszą FatalException .
|
Pakiet SDK ARCore na Unity |
Gdy włączysz komponent ARCoreSession , który zwykle znajduje się we wstępnym fabule ARCore Device, ARCore nie utworzy sesji ARCore, a Session.Status otrzyma wartość SessionStatus.FatalError .
|
AR Foundation (Unity) + wtyczka ARCore XR |
Aplikacja przestanie renderować (czarny ekran), gdy spróbuje rozpocząć sesję AR z powodu awarii w wątku głównym podczas próby wczytania nieistniejących 32-bitowych bibliotek natywnych ARCore. |
Ustalam, czy musisz zaktualizować aplikację
Aby sprawdzić, czy opublikowana aplikacja zawiera wymagane biblioteki natywne ARCore do obsługi urządzeń 64-bitowych:
Otwórz Konsolę Google Play.
Wybierz aplikację obsługującą ARCore.
Rozwiń aktywną wersję aplikacji, aby sprawdzić, czy platformy natywne obsługują wersję 64-bitową (
arm64-v8a
).
Aktualizuję aplikację, aby obsługiwała urządzenia 64-bitowe
Aby zaktualizować istniejącą aplikację 32-bitową obsługującą ARCore tak, aby zawierała 64-bitowe biblioteki natywne:
Zaktualizuj projekt, aby używał najnowszego pakietu SDK ARCore.
Utwórz aplikację i opublikuj ją za pomocą Konsoli Google Play.
Google Play sprawdzi, czy Twoja aplikacja spełnia wymagania Sklepu Google Play dotyczące kodu 64-bitowego, które weszły w życie 1 sierpnia 2019 roku. Aby mieć pewność, że Twoja aplikacja z obsługą ARCore obsługuje wersję 64-bitową (arm64-v8a
) na wszystkich urządzeniach 64-bitowych, niezależnie od wersji Androida czy poziomu interfejsu API.