Android13一加设备AppInitializer初始化失败问题求助
Android 13 一加设备上 androidx.startup.InitializationProvider 初始化异常问题
异常栈信息
Exception java.lang.RuntimeException: Unable to get provider androidx.startup.InitializationProvider: androidx.startup.StartupException: java.lang.RuntimeException: Failed to initialize display event receiver. status=-19 at android.app.ActivityThread.installProvider (ActivityThread.java:7974) at android.app.ActivityThread.installContentProviders (ActivityThread.java:7480) at android.app.ActivityThread.handleBindApplication (ActivityThread.java:7238) at android.app.ActivityThread.-$$Nest$mhandleBindApplication at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2296) at android.os.Handler.dispatchMessage (Handler.java:106) at android.os.Looper.loopOnce (Looper.java:240) at android.os.Looper.loop (Looper.java:351) at android.app.ActivityThread.main (ActivityThread.java:8422) at java.lang.reflect.Method.invoke at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:584) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1013) Caused by androidx.startup.StartupException: java.lang.RuntimeException: Failed to initialize display event receiver. status=-19 at androidx.startup.AppInitializer.doInitialize (AppInitializer.java:187) at androidx.startup.AppInitializer.discoverAndInitialize (AppInitializer.java:238) at androidx.startup.AppInitializer.discoverAndInitialize (AppInitializer.java:206) at androidx.startup.InitializationProvider.onCreate (InitializationProvider.java:45) at android.content.ContentProvider.attachInfo (ContentProvider.java:2451) at android.content.ContentProvider.attachInfo (ContentProvider.java:2421) at android.app.ActivityThread.installProvider (ActivityThread.java:7969) Caused by java.lang.RuntimeException: Failed to initialize display event receiver. status=-19 at android.view.DisplayEventReceiver.nativeInit at android.view.DisplayEventReceiver.<init> (DisplayEventReceiver.java:123) at android.view.Choreographer$FrameDisplayEventReceiver.<init> (Choreographer.java:1329) at android.view.Choreographer.<init> (Choreographer.java:287) at android.view.Choreographer.<init> at android.view.Choreographer$1.initialValue (Choreographer.java:117) at android.view.Choreographer$1.initialValue (Choreographer.java:110) at java.lang.ThreadLocal.setInitialValue (ThreadLocal.java:180) at java.lang.ThreadLocal.get (ThreadLocal.java:170) at android.view.Choreographer.getInstance (Choreographer.java:319) at androidx.profileinstaller.ProfileInstallerInitializer$Choreographer16Impl.postFrameCallback (ProfileInstallerInitializer.java) at androidx.profileinstaller.ProfileInstallerInitializer.delayAfterFirstFrame (ProfileInstallerInitializer.java) at androidx.profileinstaller.ProfileInstallerInitializer.create (ProfileInstallerInitializer.java:82) at androidx.profileinstaller.ProfileInstallerInitializer.create (ProfileInstallerInitializer.java:64) at androidx.startup.AppInitializer.doInitialize (AppInitializer.java:180)
问题背景
近期统计平台收集到的异常大多触发于一加手机系统,且仅出现于Android 13系统中。目前不清楚该系统对ContentProvider有何特殊限制,想咨询是否有开发者遇到过此类问题。
排查与解决方案建议
- 延迟ProfileInstaller初始化:异常根源是
ProfileInstallerInitializer在ContentProvider初始化阶段尝试获取Choreographer实例,而一加Android13可能在此阶段限制了Display相关服务的访问。可以禁用其自动初始化,改为在Application.onCreate()中手动触发:- 在
AndroidManifest.xml中移除自动注册:
<provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" android:exported="false" tools:node="merge"> <meta-data android:name="androidx.profileinstaller.ProfileInstallerInitializer" tools:node="remove" /> </provider>- 在Application类中手动初始化:
@Override public void onCreate() { super.onCreate(); ProfileInstaller.initialize(this); } - 在
- 检查一加系统权限或限制:部分定制ROM会对系统服务的调用时机做额外限制,可尝试在初始化前判断
Choreographer是否能正常获取,若失败则跳过或延迟初始化。 - 升级依赖版本:检查
profileinstaller和startup库的版本,尝试升级到最新稳定版,看是否修复了此类兼容性问题。
内容的提问来源于stack exchange,提问作者谢鹦鹉
相关产品推荐
相关产品推荐

