Incorrect target device after compiling with SDK 2.4.x

Description:

When compiling a watchface project, that has device specific resource folders like resources-fr935 and resources-vivoactive3, with SDK 2.4.1 or 2.4.2, the prg targets the wrong device.
This has been first observed with an app installed from the app store onto a device, and then on closer inspection found that the bug affects sideloads and the sim as well.
This looks like a resource compiler bug.

Environment:
Mac
Eclipse Oxygen.2
SDK 2.4.1 and 2.4.2
Plugin 2.4.2

Steps to reproduce:

Import the attached watchface project in Eclipse and compile it with SDK 2.4.1 or 2.4.2.
The project targets 3 devices: f5s, va3 and fr935.
Each device has its own resources folder with a unique string resource to identify it.

In the sim, run it with target as either va3 or f5s.
Note that the string FR 935 is displayed on the f5s or va3 screen

Build for device f5s or va3 and sideload to actual f5s or va3 device
Note that the string FR 935 is displayed on the f5s or va3 screen

Export as iq package, upload to store and install to actual f5s or va3 device
Note that the string FR 935 is displayed on the f5s or va3 screen

Expected results:
  • The va3 should display "Vivoactive 3". The f5s should display "Fenix 5S"

Observed results:

1. Both the va3 and f5s devices display "FR 935"

If the FR 935 is excluded from the list of targets, but its resources folder is still present, the same still happens.
If the FR 935 resources folder is removed from the project, then the va3 incorrectly displays "Fenix 5S".
  • This looks related to another issue that we were having on the simulator a while back. I was able to reproduce what you are reporting other than the fact that I am getting "Vivoactive 3" every time regardless of the device. There has to be something to do with the last device ran. However, I deleted the %TEMP%/GARMIN folder to try and clean this up and it didn't change the outcome. I've linked the two related tickets and we will be taking a look at this shortly. Thank you for the report.

    -Coleman
  • Thanks Coleman,

    Does this only affect developers on Mac, or Windows as well?

    Just a reminder this issue causes bad iq files in the app store too.
  • Hey HermoT,

    I was seeing this on Windows as well. Per our conversation I'm going to share a bit more here in the forums for the other devs.

    With the use of jungles (a default one is implemented in 2.4.1+ SDKs), resources paths have become more strict. With the old compiler we simply searched for any resource directories in a project, now they need to be in the base project directory. I've created a ticket to more clearly document best practices on file structure for the intended results. Instead of something that looks like this:
    resources
    + -- resources-fenix5s
    -- resources-fr935
    -- resources-vivoactive3


    ...the proper directory setup for resources in your project should be:

    resources
    resources-fenix5s
    resources-fr935
    resources-vivoactive3


    Developers will have to work out any pathing issues for unique directory structures that might arise.
  • Thanks Coleman,

    I can confirm that the issue was resolved after changing the folder structure to what you have suggested.
    If I understand you correctly, this only applies if you use the default jungle file?
    In other words, I can still apply my own folder structure in order to keep a clean separation between language resources and device resources, but then I have to properly specify that in the jungle file, correct?