Skip to content

Cordova Android doesn't work with resource references #1727

Open
@geoidesic

Description

@geoidesic

Bug Report

Problem

The documentation is unclear. And I tried ChatGPT too. I have this config.xml in the cordova project root.

    <platform name="android">
        <allow-intent href="market:*" />
        <plugin name="@havesource/cordova-plugin-push" spec="3.0.0">
            <variable name="SENDER_ID" value="<redacted>" />
        </plugin>
        <preference name="AndroidInsecureFileModeEnabled" value="true" />
        <preference name="EnableWebViewDebugging" value="true" />
       
        <icon src="res/screen/android/logo.xml" density="anydpi" />

        <!-- New Splash Screen Preferences -->
        <preference name="AutoHideSplashScreen" value="true" />
        <preference name="AndroidWindowSplashScreenBackground" value="#000" />
        <preference name="AndroidWindowSplashScreenAnimatedIcon" value="ic_cdv_splashscreen.xml" />
        <preference name="SplashScreen" value="screen" />
        <preference name="ShowSplashScreenSpinner" value="false" />
        <preference name="SplashScreenDelay" value="0" />
        <preference name="FadeSplashScreenDuration" value="300" />
        <preference name="SplashMaintainAspectRatio" value="true" />

        <!-- Adaptive App Icons -->
        <!-- Copy colors.xml -->
        <resource-file src="res/values/colors.xml" target="app/src/main/res/values/colors.xml" />

        <!-- Copy foreground SVG -->
        <resource-file src="res/icon/android/ic_launcher_foreground.xml" target="app/src/main/res/drawable/ic_launcher_foreground.xml" />
        
        <!-- Copy monochrome SVG -->
        <resource-file src="res/icon/android/ic_launcher_monochrome.xml" target="app/src/main/res/drawable/ic_launcher_monochrome.xml" />

        <!-- Define adaptive icons -->
        <icon 
            foreground="@drawable/ic_launcher_foreground" 
            background="@color/background" 
            density="ldpi" 
            monochrome="@drawable/ic_launcher_monochrome" />
        <icon 
            foreground="@drawable/ic_launcher_foreground" 
            background="@color/background" 
            density="mdpi" 
            monochrome="@drawable/ic_launcher_monochrome" />
        <icon 
            foreground="@drawable/ic_launcher_foreground" 
            background="@color/background" 
            density="hdpi" 
            monochrome="@drawable/ic_launcher_monochrome" />
        <icon 
            foreground="@drawable/ic_launcher_foreground" 
            background="@color/background" 
            density="xhdpi" 
            monochrome="@drawable/ic_launcher_monochrome" />
        <icon 
            foreground="@drawable/ic_launcher_foreground" 
            background="@color/background" 
            density="xxhdpi" 
            monochrome="@drawable/ic_launcher_monochrome" />
        <icon 
            foreground="@drawable/ic_launcher_foreground" 
            background="@color/background" 
            density="xxxhdpi" 
            monochrome="@drawable/ic_launcher_monochrome" />

        <preference name="android-targetSdkVersion" value="34" />
        <resource-file src="google-services.json" target="/app/google-services.json" />
        <resource-file src="firebase-service-account-pvt-key.json" target="app/src/main/assets/firebase-service-account-pvt-key.json" />
    </platform>

In the project root I have the res folder:
Screenshot 2024-07-31 at 10 42 27

Which contains the assets that match the resource-file elements in the config.xml but they are not copied into the target folders.

What is expected to happen?

I want to define: colors.xml, splash.xml, foreground.xml and monochrome.xml in my project root res folder and then have those copied across into the android platform as appropriate.

What does actually happen?

causes an error:

Android project created with [email protected]
Source path does not exist: @drawable/ic_launcher_foreground

Information

Command or Code

cordova platform remove android; cordova platform add android;

Environment, Platform, Device

I'm running cordova on Mac OS X and trying to build it for Android API v13 for emulator.

Version information

Cordova: 12.0.0 ([email protected])
[email protected]
Mac OS X: 14.5 (23F79)
Android Studio Koala | 2024.1.1 Patch 1
Node: v20.15.1

Checklist

  • I searched for existing GitHub issues
  • I updated all Cordova tooling to most recent version
  • I included all the necessary information above

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions