Okay to have different CIQ settings for different devices?

I'm sorry if this is an obvious question or if it's been addressed already, but is it possible to have different settings for different devices? e.g. Different sets of app config for CIQ1 devices versus CIQ2+ devices

To me it seems that the answer should def be yes, because there is a different PARTNUMBER-settings.json in the IQ file for each folder (corresponding to a part number), which contains settings, strings and properties, and I'm sure that the latter two can vary by device.

However, I have seen a couple of apps which have certain settings that only apply to certain devices, and (apparently) instead of selectively adding/removing them from individual devices using conditional resources, the settings label simply says "This setting applies to Epix only" (or whatever).

Is there something I'm missing where all devices need to have the same settings? (Like some constraint on the store side).

Thanks!
  • Don't you have translated strings in resources-eng, resources-XYZ,... ? As far as I remember those directories are not loaded in this case. Both for settings and for on-device strings.

  • hi, yes I have translated strings in it and cn see the changement when I cahnge languge on the sim, but maybe it is a bug?

  • Something strange is going on here, I'm investigating it

  • It's possible to have a specific strings resource for device.

  • I tested a few things and it turned out that it's even worse than what I remembered.

    In my case the 2 main goals are:

    1. don't show irrelevant settings

    2. save memory for devices that have only 16K, so exclude resources that are not used (because they belong to a feature that is only implemented in devices with at least 32K)

    Unfortunately string resources for settings still occupy memory in the device (feel free to vote: https://forums.garmin.com/developer/connect-iq/i/bug-reports/feature-request-split-the-strings-xml-for-in-device-and-settings-related-strings)

    Further more even unused string resources use memory so if there's a string only used in devices with 32K memory I don't want them in the resources directories of the devices with 16K memory.

    So I though I had a good (but complex) solution, which now turned out not working (in the sense that it still adds some unused strings)

    From the test I made now the problem is that the directories resource-<lang> are included even when monkey.jungle don't include them:

    My idea was that I will have resources-common (included in both 16K, 32K devices) and the resources-<lang> include all strings for 32K, however it was not supposed to be included for devices with 16K.

    base.resourcePath = $(base.resourcePath);resources-common;resources-array-settings-0;memory32K/resources;memory32K/resources-array-settings-0;memory32K/resources-color-array-settings-0

    fenix3.resourcePath = resources-common;resources-array-settings-0;memory16K/resources;memory16K/resources-array-settings-0

    I thought that $(base.resourcePath) causes the resources-<lang> directories to be used, so I excluded it from fenix3

    Now in order to do have translations for 16K devices I have a "matrix": for each language I have for each 9 devices with only 16K 1 line:

    fenix3.lang.deu = memory16K/resources-deu


    However I just realized that even for fenix3 I see in the "View Memory" > Global > globlals/Rez/String strings that are in resources-deu/ but are not in memory16/resources-deu :( 

    So it looks like the only way to achieve what I want would be to not to use resources-<lang> at all and generate such a line for EACH device and EACH language (which I tried to avoid...):

    fenix6.lang.hun = memory32K/resources-hun
      So to answer your question: it looks like a) it works for you (and apparently to me) because it uses the resources-<lang> directory no matter what you ask for in monkey.jungle