Podczas rozwiązywania problemów z działaniem i wydajnością aplikacji na Androida możesz rejestrować wywołania interfejsu ARCore API w dzienniku urządzenia z Androidem.
Gdy włączysz logowanie wywołań, ARCore będzie rejestrować wszystkie wywołania interfejsu API przy użyciu nazwy interfejsu C API, niezależnie od pakietu SDK, za pomocą którego skompilowano aplikację. Wszystkie nazwy interfejsów API C można znaleźć w dokumentacji referencyjnej interfejsu C wraz z ich parametrami i zwracanymi wartościami.
Włącz logowanie wywołań interfejsu API
Wywołania interfejsu ARCore API, które nie przyjmują parametrów ArSession*
, takich jak funkcje *_destroy
i *_release
, nie są rejestrowane.
Aby włączyć rejestrowanie wywołań interfejsu ARCore API, wykonaj te czynności.
Sprawdź, czy są zainstalowane Usługi Google Play dla AR (ARCore) w wersji 1.23 lub nowszej:
- W systemie Windows uruchom
adb shell pm dump com.google.ar.core | findstr /i "packages: versionName"
. - W systemie macOS uruchom
adb shell pm dump com.google.ar.core | egrep -i versionName\|packages:
.
- W systemie Windows uruchom
Otwórz środowisko AR w aplikacji, aby uruchomić aktywną sesję ARCore. Aplikacja musi być w trybie AR, aby odbierać transmisję umożliwiającą rejestrowanie. Obrazy podglądu aparatu w trybie AR powinny być widoczne na ekranie urządzenia.
Aby włączyć rejestrowanie połączeń w aplikacji, użyj tego polecenia transmisji menedżera aktywności:
# Enables ARCore call logging and saves a setting to your app's
# Android Shared Preferences, so that call logging remains enabled in
# subsequent ARCore sessions.
# Your app must have an actively running ARCore session to receive the broadcast.
adb shell am broadcast -a com.google.ar.core.ENABLE_API_CALL_LOGGING
Wyłącz logowanie wywołań interfejsu API
Aby wyłączyć rejestrowanie wywołań interfejsu ARCore API, wykonaj te czynności:
Otwórz środowisko AR w aplikacji, aby uruchomić aktywną sesję ARCore. Aplikacja musi być w trybie AR, aby odbierać transmisję z wyłączoną funkcją rejestrowania. Obrazy podglądu aparatu w trybie AR powinny być widoczne na ekranie urządzenia.
Aby wyłączyć rejestrowanie połączeń w aplikacji, użyj tego polecenia transmisji menedżera aktywności:
# Disables ARCore call logging and saves a setting to your app's
# Android Shared Preferences, so that call logging remains disabled in
# subsequent ARCore sessions.
# Your app must have an actively running ARCore session to receive the broadcast.
adb shell am broadcast -a com.google.ar.core.DISABLE_API_CALL_LOGGING
Wyświetlanie danych wyjściowych
ARCore używa tagu ARCore-Api
do wszystkich danych wyjściowych logowania w interfejsie ARCore API. Aby odfiltrować tylko te wywołania, użyj tego polecenia.
# Currently, ARCore only logs API calls that take an `ArSession*` argument.
# Functions that do not take session parameters such as `*_destroy` and `*_release` are not logged.
# -s is equivalent to the filter expression '*:S', which sets priority for all tags to silent.
adb logcat -s ARCore-Api
ARCore ogranicza ilość danych wyjściowych, aby zmniejszyć ilość spamu w logach. Łączy pominięte komunikaty logu w jeden komunikat.
Przykładowe dane wyjściowe pominiętych komunikatów logu:
D ARCore-Api: ArFrame_create(<ptr>)
D ARCore-Api: ArSession_update(<ptr>) -> AR_SUCCESS
D ARCore-Api: ArFrame_acquireCamera(<ptr>, <ptr>)
D ARCore-Api: ArFrame_getDisplayGeometryChanged(<ptr>, <ptr>)
D ARCore-Api: ArCamera_getTrackingFailureReason(<ptr>, <ptr>)
D ARCore-Api: ArFrame_getTimestamp(<ptr>, <ptr>)
D ARCore-Api: ArSession_setDisplayGeometry(0, 1080, 2195)
D ARCore-Api: ArFrame_create(<ptr>) (suppressing for 10s)
D ARCore-Api: ArSession_update(<ptr>) -> AR_SUCCESS (suppressing for 10s)
D ARCore-Api: ArFrame_acquireCamera(<ptr>, <ptr>) (suppressing for 10s)
D ARCore-Api: ArFrame_getDisplayGeometryChanged(<ptr>, <ptr>) (suppressing for 10s)
D ARCore-Api: ArCamera_getTrackingFailureReason(<ptr>, <ptr>) (suppressing for 10s)
D ARCore-Api: ArFrame_getTimestamp(<ptr>, <ptr>) (suppressing for 10s)
D ARCore-Api: ArSession_setDisplayGeometry(0, 1080, 2195) (suppressing for 10s)