res/mipmap-anydpi-v26中ic_launcher.xml资源异常问题求助
启动图标资源加载异常问题排查与解决
问题现象
将应用从Android Studio运行至搭载Android 12的Samsung Galaxy S10设备,或关闭后重启已安装应用时,Logcat抛出资源未找到异常,导致应用启动失败。
Logcat报错信息
java.util.concurrent.ExecutionException: android.content.res.Resources$NotFoundException: Drawable com.compagny_name.app_name:mipmap/ic_launcher with resource ID #0x7f0f0000 at java.util.concurrent.FutureTask.report(FutureTask.java:123) at java.util.concurrent.FutureTask.get(FutureTask.java:207) at android.content.res.Resources.fetchDrawableFromFutureCache(Resources.java:2751) at android.content.res.Resources.loadDrawable(Resources.java:1064) at android.content.res.Resources.getDrawableForDensity(Resources.java:1048) at android.content.res.Resources.getDrawable(Resources.java:987) at android.content.Context.getDrawable(Context.java:758) at com.android.internal.widget.ToolbarWidgetWrapper.setIcon(ToolbarWidgetWrapper.java:322) at com.android.internal.widget.ActionBarOverlayLayout.setIcon(ActionBarOverlayLayout.java:755) at com.android.internal.policy.PhoneWindow.setDefaultIcon(PhoneWindow.java:1884) at android.app.Activity.initWindowDecorActionBar(Activity.java:3575) at android.app.Activity.getActionBar(Activity.java:3508) at com.compagny_name.app_name.ui.container.MainActivity.onCreate(MainActivity.kt:433) at android.app.Activity.performCreate(Activity.java:8290) at android.app.Activity.performCreate(Activity.java:8270) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1329) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4085) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4277) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2443) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:313) at android.app.ActivityThread.main(ActivityThread.java:8751) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) Caused by: android.content.res.Resources$NotFoundException: Drawable com.compagny_name.app_name:mipmap/ic_launcher with resource ID #0x7f0f0000 Caused by: android.content.res.Resources$NotFoundException: File res/mipmap-anydpi-v21/ic_launcher.xml from drawable resource ID #0x7f0f0000 at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:1039) at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:825) at android.content.res.Resources$submitToFuture.call(Resources.java:2856) at android.content.res.Resources$submitToFuture.call(Resources.java:2838) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:920) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.app.Application.getResources()' on a null object reference at android.graphics.drawable.AdaptiveIconDrawable.<init>(AdaptiveIconDrawable.java:165) at android.graphics.drawable.AdaptiveIconDrawable.<init>(AdaptiveIconDrawable.java:152) at android.graphics.drawable.DrawableInflater.inflateFromTag(DrawableInflater.java:170) at android.graphics.drawable.DrawableInflater.inflateFromXmlForDensity(DrawableInflater.java:143) at android.graphics.drawable.Drawable.createFromXmlInnerForDensity(Drawable.java:1426) at android.graphics.drawable.Drawable.createFromXmlForDensity(Drawable.java:1385) at android.content.res.ResourcesImpl.loadXmlDrawable(ResourcesImpl.java:1071) at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:1010) at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:825) at android.content.res.Resources$submitToFuture.call(Resources.java:2856) at android.content.res.Resources$submitToFuture.call(Resources.java:2838) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:920)
主Activity相关代码
MainTheme() { Surface( modifier = modifier .fillMaxSize() .padding(0.dp) .background(Color.Transparent) .border( width = 0.dp, color = Color.Transparent, shape = RectangleShape ), shape = RectangleShape, color = Color.Transparent, contentColor = contentColorFor(Color.Transparent), tonalElevation = 0.dp, shadowElevation = 0.dp, border = null, ) { .... } }
启动图标资源文件(ic_launcher.xml)
<?xml version="1.0" encoding="utf-8"?> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> <background android:drawable="@drawable/ic_launcher_background" /> <foreground android:drawable="@drawable/ic_launcher_foreground" /> <monochrome android:drawable="@drawable/ic_launcher_foreground" /> </adaptive-icon>
开发环境与设备信息
- 设备:Samsung Galaxy S10(Android 12)
- Android Studio:Jellyfish | 2023.3.1 RC
- SDK Build-Tools:34.0.0
- AGP:8.4.0-rc02
- Kotlin:1.9.23
- Compose:BOM 2024.04.00 | Compiler 1.5.11
- Dagger:2.51.1
- Min SDK:26
- Compile SDK:34
- Target SDK:34
解决方案
1. 检查Application类初始化
确保自定义Application在AndroidManifest.xml中正确注册,且onCreate()方法内没有提前执行资源加载逻辑,避免Application实例未完全就绪时触发图标加载。如果没有自定义Application,可暂时添加一个空实现测试。
2. 修复Adaptive Icon资源引用
- 确认
@drawable/ic_launcher_background和@drawable/ic_launcher_foreground存在于所有必要的drawable目录(如drawable-mdpi、drawable-hdpi等),且资源ID未与其他文件冲突。 - Android 12+对monochrome图标有严格要求,若暂时不需要该属性,可移除
<monochrome>标签后测试是否正常启动。
3. 调整Activity主题配置
若应用使用Compose且不需要ActionBar,在AndroidManifest.xml的MainActivity节点中设置无ActionBar主题:
<activity android:name=".ui.container.MainActivity" android:theme="@style/Theme.AppCompat.NoActionBar"> <!-- 其他配置 --> </activity>
或在自定义Compose主题中禁用ActionBar相关特性,避免系统自动尝试加载启动图标到ActionBar。
4. 清理缓存与重建项目
- 执行
Build > Clean Project和Build > Rebuild Project。 - 卸载设备上的应用后重新安装。
- 清除Android Studio缓存:
File > Invalidate Caches...,重启IDE后重试。
5. 降级AGP至稳定版本
AGP 8.4.0-rc02为候选版本,可能存在兼容性问题。尝试降级至稳定版(如8.3.2),修改项目根目录下build.gradle或build.gradle.kts中的AGP版本:
plugins { id("com.android.application") version "8.3.2" apply false // 其他插件 }
内容的提问来源于stack exchange,提问作者andronaline
相关产品推荐
相关产品推荐

