Bei der Behebung von Laufzeitverhalten und Leistungsproblemen in deiner Android-App kannst du ARCore API-Aufrufe im Android-Gerätelog protokollieren.
Wenn du das Anruf-Logging aktivierst, protokolliert ARCore alle API-Aufrufe mit ihrem C API-Namen, unabhängig davon, mit welchem SDK die App erstellt wurde. Sie finden alle C API-Namen zusammen mit ihren Parametern und Rückgabewerten in der C API-Referenzdokumentation.
API-Aufrufprotokollierung aktivieren
ARCore API-Aufrufe, die keine ArSession*
-Parameter wie *_destroy
- und *_release
-Funktionen annehmen, werden nicht protokolliert.
So aktivieren Sie die ARCore API-Aufrufprotokollierung:
Achten Sie darauf, dass Google Play-Dienste für AR (ARCore) 1.23 oder höher installiert ist:
- Führen Sie unter Windows
adb shell pm dump com.google.ar.core | findstr /i "packages: versionName"
aus. - Unter macOS führen Sie
adb shell pm dump com.google.ar.core | egrep -i versionName\|packages:
aus.
- Führen Sie unter Windows
Öffne die AR-Version in deiner App, damit eine aktive ARCore-Sitzung ausgeführt wird. Ihre App muss sich im AR-Modus befinden, um den Broadcast zu empfangen, der das Logging ermöglicht. Die Vorschaubilder der AR-Kamera sollten auf dem Gerätebildschirm sichtbar sein.
Verwenden Sie den folgenden Aktivitätsmanager-Broadcast-Befehl, um die Anrufprotokollierung für Ihre App zu aktivieren.
# 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
Logging von API-Aufrufen deaktivieren
So deaktivieren Sie die ARCore API-Aufrufprotokollierung:
Öffne die AR-Version in deiner App, damit eine aktive ARCore-Sitzung ausgeführt wird. Ihre App muss sich im AR-Modus befinden, um den Broadcast zu empfangen, mit dem das Logging deaktiviert wird. Die Vorschaubilder der AR-Kamera sollten auf dem Gerätebildschirm sichtbar sein.
Deaktivieren Sie mit dem folgenden Aktivitätsmanager-Broadcast-Befehl die Anrufprotokollierung für Ihre App:
# 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
Ausgabe ansehen
ARCore verwendet das Tag ARCore-Api
für die gesamte ARCore API-Logging-Ausgabe. Verwenden Sie den folgenden Befehl, um nur diese Aufrufe zu filtern.
# 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 schränkt die Ausgabegeschwindigkeit ein, um Protokoll-Spam zu reduzieren. Übersprungene Lognachrichten werden in einer einzigen Lognachricht zusammengefasst.
Beispielausgabe übersprungener Lognachrichten:
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)