Регистрация вызовов ARCore

При устранении проблем с поведением во время выполнения и производительностью вашего приложения Android вы можете регистрировать вызовы API ARCore в журнале устройства Android .

Когда вы включаете ведение журнала вызовов, ARCore будет регистрировать все вызовы API с использованием имени C API, независимо от SDK, с помощью которого было создано приложение. Все имена C API можно найти в справочной документации C API вместе с их параметрами и возвращаемыми значениями.

Включить ведение журнала вызовов API

Вызовы API ARCore, которые не принимают параметры ArSession* , такие как функции *_destroy и *_release не регистрируются.

Выполните следующие действия, чтобы включить ведение журнала вызовов API ARCore.

  1. Убедитесь, что установлены Службы Google Play для AR (ARCore) 1.23 или более поздней версии:

    • В Windows запустите adb shell pm dump com.google.ar.core | findstr /i "packages: versionName" .
    • В macOS запустите adb shell pm dump com.google.ar.core | egrep -i versionName\|packages: .
  2. Откройте AR-интерфейс в своем приложении, чтобы запустить активный сеанс ARCore. Ваше приложение должно находиться в режиме AR, чтобы получать трансляцию, позволяющую вести журнал. Изображения предварительного просмотра камеры AR должны быть видны на экране устройства.

  3. Используйте следующую широковещательную команду диспетчера активности, чтобы включить ведение журнала вызовов: для вашего приложения.

    # 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
    

Отключить ведение журнала вызовов API

Выполните следующие действия, чтобы отключить ведение журнала вызовов API ARCore.

  1. Откройте AR-интерфейс в своем приложении, чтобы запустить активный сеанс ARCore. Ваше приложение должно находиться в режиме AR, чтобы получать трансляцию, отключающую ведение журнала. Изображения предварительного просмотра камеры AR должны быть видны на экране устройства.

  2. Используйте следующую широковещательную команду диспетчера активности, чтобы отключить ведение журнала вызовов для вашего приложения:

    # 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
    

Просмотр вывода

ARCore использует тег ARCore-Api для всех выходных данных журнала ARCore API. Используйте следующую команду, чтобы фильтровать только эти вызовы.

# 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 ограничивает скорость вывода, чтобы уменьшить спам в журналах. Он объединяет пропущенные сообщения журнала в одно сообщение журнала.

Пример вывода пропущенных сообщений журнала:

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)