Plex on Android crashes when trying to browse library

Server Version#: 4.12.3
Player Version#: 8.19.4.26517 (f35a541c)

My player device is a Amazon Fire HD10 android tablet. I’ve installed Plex from the Amazon app store and activated it.

My music library is over 5000 songs, almost all of them have album art. My server is a Synology NAS.

With the app open (on the “home” page), I can open the sidebar to select my library. The library loads on the “recommended” screen. If I tap the “library” icon next to the “recommended” Icon, then the app crashes immediately.

Below is the stacktrace from the logs when it crashes (along with the following startup logs. Thanks so much for your help!

Matt

07-09 08:35:27.526 i: [UserAction] Open change layout dialog.
07-09 08:35:30.510 i: [PlaybackTimeBehaviour] Time: 9994 IsStarted: true
07-09 08:35:30.513 i: Fetching [method:GET] http://192.168.0.25:32400/:/timeline?bufferedTime=181841&duration=298000&guid=mbid%3A%2F%2Fb21c03b5-465b-4907-8adc-d7dccf08e773&key=%2Flibrary%2Fmetadata%2F259&playbackTime=9995&playQueueItemID=210&ratingKey=259&state=playing&time=10158&X-Plex-Client-Identifier=ae45a758ae86e6f1-com-plexapp-android&X-Plex-Language=en-us
07-09 08:35:30.735 e: Fatal exception occurred.
07-09 08:35:30.738 e: An exception occurred: java.lang.NoSuchMethodError: No virtual method setForeground(Landroid/graphics/drawable/Drawable;)V in class Landroid/widget/RelativeLayout; or its super classes (declaration of ‘android.widget.RelativeLayout’ appears in /system/framework/framework.jar:classes2.dex)
07-09 08:35:30.767 e: Stacktrace: java.lang.NoSuchMethodError: No virtual method setForeground(Landroid/graphics/drawable/Drawable;)V in class Landroid/widget/RelativeLayout; or its super classes (declaration of ‘android.widget.RelativeLayout’ appears in /system/framework/framework.jar:classes2.dex)
at com.plexapp.plex.utilities.ListItemView.setPlexObjectImpl(SourceFile:10)
at com.plexapp.plex.utilities.d2.setPlexObject(SourceFile:6)
at com.plexapp.plex.adapters.q0.g.X(SourceFile:16)
at com.plexapp.plex.adapters.q0.i.X(SourceFile:1)
at com.plexapp.plex.adapters.q0.i.onBindViewHolder(SourceFile:1)
at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(SourceFile:1)
at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(SourceFile:8)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(SourceFile:7)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(SourceFile:55)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(SourceFile:2)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(SourceFile:1)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(SourceFile:3)
at androidx.recyclerview.widget.GridLayoutManager.layoutChunk(SourceFile:12)
at androidx.recyclerview.widget.LinearLayoutManager.fill(SourceFile:9)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(SourceFile:65)
at androidx.recyclerview.widget.GridLayoutManager.onLayoutChildren(SourceFile:3)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(SourceFile:12)
at androidx.recyclerview.widget.RecyclerView.dispatchLayout(SourceFile:15)
at androidx.recyclerview.widget.RecyclerView.onLayout(SourceFile:2)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at androidx.swiperefreshlayout.widget.SwipeRefreshLayout.onLayout(SourceFile:11)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at androidx.constraintlayout.widget.ConstraintLayout.onLayout(SourceFile:12)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at androidx.coordinatorlayout.widget.CoordinatorLayout.layoutChild(SourceFile:18)
at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayoutChild(SourceFile:7)
at androidx.coordinatorlayout.widget.CoordinatorLayout.onLayout(SourceFile:8)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at androidx.drawerlayout.widget.DrawerLayout.onLayout(SourceFile:10)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1703)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1557)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1466)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:579)
at android.widget.FrameLayout.onLayout(FrameLayout.java:514)
at android.view.View.layout(View.java:16076)
at android.view.ViewGroup.layout(ViewGroup.java:5051)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2122)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1879)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1090)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5988)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:781)
at android.view.Choreographer.doCallbacks(Choreographer.java:592)
at android.view.Choreographer.doFrame(Choreographer.java:560)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:767)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5597)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:984)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

07-09 08:35:36.843 i: [AppEventMonitor] ApplicationCreated
07-09 08:35:37.053 i: ------------------------------
07-09 08:35:37.054 i: Hello, Plex for Android world (debug: false)!
07-09 08:35:37.055 i: App version: 8.19.4.26517 (825653592)
07-09 08:35:37.056 i: Nano server version: null
07-09 08:35:37.058 i: Manufacturer: Amazon Device: suez Model: KFSUWI Product: suez Version: 5.1.1
07-09 08:35:37.061 i: Screen size: XLarge Screen density: High Resolution: 1920x1200 DPI: 240 Touchscreen: true Marketplace: com.amazon.venezia Architecture: armeabi-v7a
07-09 08:35:37.084 i: [BootBehaviour][Background] Network behaviour took 0ms to execute on the background thread.
07-09 08:35:37.100 i: [MetricsSender] Metrics host is not available so we need to fetch the privacy map.
07-09 08:35:37.104 i: [BootBehaviour][Background] Players Manager behaviour took 4ms to execute on the background thread.
07-09 08:35:37.105 i: [BootBehaviour][Background] Metrics behaviour took 20ms to execute on the background thread.
07-09 08:35:37.107 w: [InstallReferrerManager] Unable to read install referrer response at this point. Probably a transient problem. ResponseCode 2
07-09 08:35:37.108 i: [BootBehaviour][Background] Install Referrer behaviour took 6ms to execute on the background thread.
07-09 08:35:37.126 i: [AppEventMonitor] StartingNano +0.29s
07-09 08:35:37.134 i: [Sync] Setting environment variables.
07-09 08:35:37.135 i: [Sync] PLEX_MEDIA_SERVER_HOME = /data/data/com.plexapp.android

this is an old web app version of server which means you are running a pretty old version of server. In settings the version number of the server will be in the General settings that are under you server’s name. I would consider updating.

Updated server to version 4.57.4

No change in behavior.

Check that line from the error log, the “NoSuchMethodError” makes me think it’s using some API that Amazon doesn’t make available in the flavor of Android it uses on the Fire tablets or something.

Updates: Some googling on the error message suggests this is an API that is available in Android API level 23, which is Android 6 or later but there is a bug in the documentation which makes the API seem to be available in API level 1. My tablet is a 7th generation (2.5 years old), so it runs Fire OS 5, based on Android 5.1–API level 22.

So updated question, how can I get an older version of the Plex App that will (hopefully) be compatible with my device? Or maybe Plex will remove the dependency on this relatively recent API so that it will still work with devices released in the last 3 years? Any thoughts @BigWheel ?

you can get older versions in release announcement, but don’t think those ones can check the Amazon store for purchase. Plex for Android - #394 by daioio

I’ll need to ask the devs when they are back but i don’t think we changed the api used in quite a long time.

Hey @BigWheel , any update from the devs?

Thanks!

Matt

Sorry. Was told the API has not changed. still support back to API 21 specifically for Amazon devices. Looks like it might be calling something from api 23 though for some reason.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.