ARCore-Anruf-Logging

Bei der Behebung von Laufzeitverhalten und Leistungsproblemen bei Android- kannst du ARCore API-Aufrufe im Android-Geräteprotokoll

Wenn du die Anrufprotokollierung aktivierst, protokolliert ARCore alle API-Aufrufe mit der C API und zwar unabhängig vom SDK, mit dem die App erstellt wurde. Alle C API-Namen können finden Sie in der C API-Referenzdokumentation. ihre Parameter und Rückgabewerte.

API-Aufruf-Logging aktivieren

ARCore API-Aufrufe, die keine ArSession*-Parameter wie *_destroy annehmen und *_release werden nicht protokolliert.

So aktivieren Sie die Anrufprotokollierung mit der ARCore API.

  1. Google Play Services for AR (ARCore) 1.23 oder höher muss installiert sein:

    • 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.
  2. Öffne die AR-Oberfläche in deiner App, damit eine aktive ARCore-Sitzung läuft ausgeführt wird. Deine App muss sich im AR-Modus befinden, damit du die Übertragung empfangen kannst, durch die Logging. Die Vorschaubilder der AR-Kamera sollten auf dem Gerät zu sehen sein Bildschirm.

  3. Verwenden Sie den folgenden Übertragungsbefehl des Aktivitätsmanagers, um die Anrufprotokollierung zu aktivieren: für Ihre App.

    # 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-Aufrufprotokollierung deaktivieren

Führen Sie die folgenden Schritte aus, um die ARCore API-Aufrufprotokollierung zu deaktivieren.

  1. Öffne die AR-Oberfläche in deiner App, damit eine aktive ARCore-Sitzung läuft ausgeführt wird. Deine App muss sich im AR-Modus befinden, damit du die Übertragung empfangen kannst, bei der die Deaktivierung Logging. Die Vorschaubilder der AR-Kamera sollten auf dem Gerät zu sehen sein Bildschirm.

  2. Mit dem folgenden Aktivitätsmanager-Broadcast-Befehl kannst du die Anrufprotokollierung deaktivieren 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 ARCore-Api-Tag für die gesamte ARCore API-Logging-Ausgabe. Verwenden Sie die Methode 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

Die ARCore-Rate begrenzt die Ausgabe, um Logspam zu reduzieren. Übersprungene Logs werden aggregiert in einer Log-Nachricht zusammenfassen.

Beispielausgabe übersprungener Logeinträge:

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)