You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Cordova环境后编译报错:找不到drawable/notification_icon资源

升级Cordova环境后Android编译报错:找不到drawable/notification_icon资源

错误详情

编译应用时触发如下错误:

Execution failed for task ':app:processDebugResources'.
> A failure occurred while executing com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction
   > Android resource linking failed
     ERROR: C:\Users\rolin\dev\myApp\platforms\android\app\src\main\AndroidManifest.xml:34:9-140: AAPT: error: resource drawable/notification_icon (aka com.myApp:drawable/notification_icon) not found.

已确认所有资源文件存在,甚至重新保存文件确保未损坏,但错误依旧无法消除。

关键配置内容

AndroidManifest.xml 核心片段

<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="5020" android:versionName="0.50.20" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">
    <!-- 省略其他非关键配置 -->
    <application android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true">
        <!-- 省略其他组件配置 -->
        <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/notification_icon" />
    </application>
</manifest>

环境升级记录

  • cordova-cli:从11.1.0升级到v12.0
  • cordova-android:从11.0升级到v13.0
  • Node.js:从v14.22升级到v22.16
  • JDK:从11升级到v17
  • 本地Gradle:从6.9.1升级到7.6.5(已知cordova-android自带Gradle,此升级非必需)

当前环境信息

Ionic:

   Ionic CLI         : 6.17.0 (C:\Users\rolin\AppData\Roaming\npm\node_modules\@ionic\cli)
   Ionic Framework   : ionic1 1.3.4
   @ionic/v1-toolkit : 3.2.20

Cordova:

   Cordova CLI       : 12.0.0 (cordova-lib@12.0.2)
   Cordova Platforms : android 13.0.0
   Cordova Plugins   : no whitelisted plugins (8 plugins total)

Utility:

   cordova-res : 0.15.4
   native-run  : 1.7.1

System:

   Android SDK Tools : 26.1.1 (C:\Users\rolin\AppData\Local\Android\sdk)
   NodeJS            : v22.16.0 (C:\Program Files\nodejs\node.exe)
   npm               : 11.4.1
   OS                : Windows 10

已移除大部分插件仅保留核心依赖,仍无法解决问题。此前使用cordova-android v11及以下版本(基于Ionic v1)时一切正常,升级后出现该资源找不到的问题,怀疑是版本兼容性导致。


解决方法

1. 核对资源文件的位置和命名

  • 确认notification_icon文件在platforms/android/app/src/main/res/下的各个drawable-xxx(如drawable-hdpi、drawable-xhdpi)目录中都有对应尺寸版本,文件名必须全小写、无空格或特殊字符。
  • 如果图标实际放在mipmap目录,把Manifest里的@drawable/notification_icon改成@mipmap/notification_icon。

2. 彻底清理并重建项目

执行以下命令重置Android平台:

cordova clean android
cordova platform remove android
cordova platform add android@13.0.0
cordova build android

3. 按cordova-android 13规则管理资源

cordova-android 13的资源打包逻辑有变化,不要直接修改platforms目录里的文件,而是在项目根目录创建res/android/drawable文件夹,把图标放进去,然后在config.xml里配置自动复制:

<platform name="android">
    <resource-file src="res/android/drawable/notification_icon.png" target="app/src/main/res/drawable/notification_icon.png" />
    <!-- 其他密度的图标比如drawable-hdpi/notification_icon.png也要对应添加 -->
</platform>

4. 修复Firebase插件的兼容性问题

旧版Cordova Firebase插件可能不支持cordova-android 13:

  • 升级插件到最新版,或者换成cordova-plugin-firebasex替代旧插件。
  • 如果是插件自动生成的Manifest配置出错,可以在config.xml里强制修改默认通知图标:
<platform name="android">
    <edit-config file="AndroidManifest.xml" target="/manifest/application/meta-data[@android:name='com.google.firebase.messaging.default_notification_icon']" mode="merge">
        <meta-data android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@mipmap/ic_launcher" />
    </edit-config>
</platform>

5. 确保JDK版本配置正确

在platforms/android/gradle.properties里指定JDK 17路径,避免Gradle找不到正确的JDK:

org.gradle.java.home=C:\\Program Files\\Java\\jdk-17

内容的提问来源于stack exchange,提问作者rolinger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:14:52