android runtime_error ai_generated true

java.lang.RuntimeException: 无法创建应用程序com.example.MyApplication: androidx.work.WorkManagerInitializationException: 检测到重复的WorkManager初始化

java.lang.RuntimeException: Unable to create application com.example.MyApplication: androidx.work.WorkManagerInitializationException: Duplicate WorkManager initialization detected

ID: android/workmanager-initialization-failure-duplicate

其他格式: JSON · Markdown 中文 · English
92%修复率
87%置信度
1证据数
2023-08-12首次发现

版本兼容性

版本状态引入弃用备注
WorkManager 2.9.0 active
Android 12 (API 31) active
Android 13 (API 33) active
WorkManager 2.8.1 active

根因分析

WorkManager既通过ContentProvider自动初始化(Android 12+默认),又在Application.onCreate()中手动初始化,导致冲突,在应用启动时抛出异常。

English

WorkManager is initialized both automatically via ContentProvider (default in Android 12+) and manually in Application.onCreate(), causing a conflict that throws an exception during app startup.

generic

官方文档

https://developer.android.com/topic/libraries/architecture/workmanager/advanced/custom-configuration#remove-default-initializer

解决方案

  1. Disable automatic initialization in AndroidManifest.xml by adding <provider android:name="androidx.startup.InitializationProvider" android:authorities="${applicationId}.androidx-startup" android:exported="false" tools:node="merge"> <meta-data android:name="androidx.work.WorkManagerInitializer" android:value="androidx.startup" tools:node="remove" /> </provider>
  2. Use WorkManager.initialize() only in Application.onCreate() after checking if already initialized via a flag. Example: if (!WorkManager.isInitialized()) { WorkManager.initialize(this, config); }

无效尝试

常见但无效的做法:

  1. Remove manual WorkManager.initialize() call but keep custom configuration 70% 失败

    If custom configuration is needed (e.g., custom executor), removing the manual call means the auto-init uses default config, losing custom settings.

  2. Add try-catch around WorkManager.initialize() to suppress the exception 85% 失败

    Suppressing the exception does not resolve the underlying duplicate initialization; WorkManager may be in an inconsistent state.