SDK 8.4.0 – Launcher Icon Resource Error Despite Valid Setup

Hi Garmin team and fellow developers,

I'm encountering a persistent issue when building a Connect IQ watch-app using SDK 8.4.0. The build fails with:

ERROR: A bitmap resource matching the provided launcher icon can't be found.
You must provide a bitmap resource for the launcher icon.

Setup:

  • manifest.xml:

<iq:application
  id="sleep.logger"
  name="@Strings.AppName"
  type="watch-app"
  entry="SleepLoggerApp"
  launcherIcon="@Drawables.AppIcon">

  • drawables.xml
      :

<drawables>
  <bitmap id="AppIcon" filename="AppIcon.png"/>
</drawables>

      • File:
    resources/Drawables/AppIcon.png
      (48×48 PNG, verified)

I’ve checked:

  • File path and case sensitivity
  • PNG format (24-bit RGB)
  • XML encoding (UTF-8 without BOM)
  • Tried placing the icon in resources-venu3s/Drawables and duplicating drawables.xml there
  • Tried SDK 8.3.x — different error, still fails

Still getting the same error. Is this a known issue with SDK 8.4.0? Any workaround or fix?

Thanks in advance,
Dmytro

Top Replies

All Replies

  • Post your monkey.jungle section for the resources ...

  • Posting my monkey.jungle resources section as requested:

    <monkey.jungle>
      <resources>
        <drawable id="AppIcon" filename="Drawables/AppIcon.png"/>
      </resources>
    </monkey.jungle>

    resources/resources.xml:
    <resources>
      <drawable id="AppIcon" filename="Drawables/AppIcon.png"/>
    </resources>

    File on disk: resources/Drawables/AppIcon.png (48x48 PNG, 24-bit)
    Build command: C:\...bin\monkeyc.bat -m manifest.xml -z resources/resources.xml source/SleepLoggerApp.mc -o bin/SleepLogger.prg -y developer_key.der

    Error: ERROR: A bitmap resource matching the provided launcher icon can't be found.

  • I suspect it has to do withe the pathname for the PNG.

    The way I generally do it is in the resources folder, I have a drawables folder which has drawable.xml which cpntains

    <drawables>
        <bitmap id="LauncherIcon" filename="launcher_icon.png" />
    </drawables>
    then launcher_icon.png is right in the drawables folder
    resource
      drawables
        drawables.xml
        launcher_icon.png
    Here's the reference in the manifest.xml
    launcherIcon="@Drawables.LauncherIcon"
  • <monkey.jungle>
      <resources>
        <drawable id="AppIcon" filename="Drawables/AppIcon.png"/>
      </resources>
    </monkey.jungle>

    Uh what?

    That's not what monkey.jungle is supposed to look like.

    Is this a vibe coded app?

    resources/resources.xml:
    <resources>
      <drawable id="AppIcon" filename="Drawables/AppIcon.png"/>
    </resources>

    File on disk: resources/Drawables/AppIcon.png (48x48 PNG, 24-bit)

    This part makes sense.

    I suspect it has to do withe the pathname for the PNG.

    Yes and no. I tried something similar (path for bitmap file that's relative to the referring xml file) and *built normally* from VS Code, and it works fine.

    I think the real problem here is the manual command line build:

    Build command: C:\...bin\monkeyc.bat -m manifest.xml -z resources/resources.xml source/SleepLoggerApp.mc -o bin/SleepLogger.prg -y developer_key.der

    Note how the manifest, resource and source files are all explicitly specified on the command line, which is not what would happen with a standard automatic build.

    Why not just build from VS Code?

    If you must build from the command line:

    - create a valid monkey.jungle file (you have to do this either way)

    - specify the monkey.jungle file on the command line, not manifest, resource and source files

    The location of the manifest file is specified in monkey.jungle, and the compiler will find source and resource files automatically using the standard locations.

    e.g.

    C:\...bin\monkeyc.bat -f monkey.jungle -o bin/SleepLogger.prg -y developer_key.der

    Here's a barebones example of monkey.jungle:

    project.manifest = manifest.xml

  • Despite Valid Setup

    Build command: C:\...bin\monkeyc.bat -m manifest.xml -z resources/resources.xml source/SleepLoggerApp.mc -o bin/SleepLogger.prg -y developer_key.der

    So I'm kinda curious why you think your "setup" is valid. I'm including the build command line as part of your setup, for this purpose.

    I'm fairly sure that no Garmin documentation or human being would suggest a Monkey C build command line like that, since -m and -z are deprecated options, and since the standard build command is completely different.

    Did chatgpt suggest that command line?

    If so, consider how using an LLM actually wastes more time compared to not using an LLM, when you're not familiar with the subject matter.

    It's also additional effort for people to help you, since we have to ask / figure out what you actually did.

    Still getting the same error. Is this a known issue with SDK 8.4.0? Any workaround or fix?

    Also super interesting that you assumed it was a problem on Garmin's side. I see this a lot with cases like this (tech questions where LLMs were apparently used as a starting point, and the questioner only asked human beings as a final resort).

    It's like chatgpt / claude / etc can do no wrong, despite massive amounts of evidence to the contrary. So when reality contradicts chatgpt, it must be reality that's incorrect.

    If you didn't use an LLM, then I apologize for assuming.