androidandroid-ndkjava-native-interface

What does it mean when an Android app has a transactNative DeadObjectException?


My app is a game that consumes a native.so file and has a JNI layer. Whenever the OS kills my app (for example during an in-app update), I see this warning in logcat. What does it mean and how can I address it?

WindowManager  system_server  W  Exception thrown during dispatchAppVisibility Window{b193956 u0 com.myapp.test/com.myapp.test.LaunchActivity EXITING}
        android.os.DeadObjectException
        at android.os.BinderProxy.transactNative(Native Method)
        at android.os.BinderProxy.transact(BinderProxy.java:592)
        at android.view.IWindow$Stub$Proxy.dispatchAppVisibility(IWindow.java:557)
        at com.android.server.wm.WindowState.sendAppVisibilityToClients(WindowState.java:3298)
        at com.android.server.wm.WindowContainer.sendAppVisibilityToClients(WindowContainer.java:1343)
        at com.android.server.wm.WindowToken.setClientVisible(WindowToken.java:437)
        at com.android.server.wm.ActivityRecord.setClientVisible(ActivityRecord.java:7147)
        at com.android.server.wm.ActivityRecord.postApplyAnimation(ActivityRecord.java:5841)
        at com.android.server.wm.ActivityRecord.commitVisibility(ActivityRecord.java:5784)
        at com.android.server.wm.Transition.finishTransition(Transition.java:1373)
        at com.android.server.wm.TransitionController.finishTransition(TransitionController.java:986)
        at com.android.server.wm.WindowOrganizerController.finishTransition(WindowOrganizerController.java:526)
        at android.window.IWindowOrganizerController$Stub.onTransact(IWindowOrganizerController.java:293)
        at com.android.server.wm.WindowOrganizerController.onTransact(WindowOrganizerController.java:215)
        at android.os.Binder.execTransactInternal(Binder.java:1406)
        at android.os.Binder.execTransact(Binder.java:1350)

Solution

  • It means the Android framework is trying to send an IPC (for dispatchAppVisibility) to your app, but failed because your app died, it failed to send it.

    transactNative(NativeMethod) refers to native code in the Android Binder implementation, running on the Android system_server side and is not related to your native code. This error doesn't interfere with getting the app back up and running after the update, and can be safely ignored.