Problem with API level on fenix6xpro

Hello,

I have the following problem during compilation time:

ERROR: Device 'fenix6xpro' does not support API Level '3.3.0'.
com.garmin.connectiq.common.manifest.ManifestException: Device 'fenix6xpro' does not support API Level '3.3.0'.
at com.garmin.monkeybrains.Monkeybrains.runPRGCompiler(Monkeybrains.java:1419)
at com.garmin.monkeybrains.Monkeybrains.compileApplication(Monkeybrains.java:1281)
at com.garmin.monkeybrains.Monkeybrains.run(Monkeybrains.java:2714)
at com.garmin.monkeybrains.Monkeybrains.simpleMain(Monkeybrains.java:339)
at com.garmin.monkeybrains.Monkeybrains.main(Monkeybrains.java:368)

What's wrong with my configuration, any suggestion?

As far as I know fenix6xpro supports API level 3.3.0

thanks a lot

Giovanni

  • You mean the API level in the manifest or the one you can supply to monkeyc? The latter is some kind of... i dunno. That one has 3.2.6 as a max for the fenix6 family afaik.

  • Is your Connect IQ Devices folder up-to-date via the SDK Manager?

    I don't have the same problem when I try to build a data field for fenix6xpro, with API level 3.3.0 specified in the manifest. I can reproduce the problem if I put in some fake API level like 5.0.0 tho.

    In general, you can check the minimum API level for a device by opening compiler.json in the device-specific folder.

    The Devices folder can be found at the following location:

    - Windows: %appdata%\Garmin\ConnectIQ\Devices\

    e.g. for fenix6xpro, compiler.json is located here:  %appdata%\Garmin\ConnectIQ\Devices\fenix6xpro\compiler.json

    - Mac: ~/Library/Application Support/Garmin/ConnectIQ/Devices

    On my computer, fenix6xpro\compiler.json shows that the worldwide entry in the partNumbers array has a connectIQVersion of 3.3.1.

    the one you can supply to monkeyc? The latter is some kind of... i dunno.

    I don't think that argument does anything, since VS Code doesn't even pass it to monkeyc. Eclipse does pass it to monkey C (you're prompted for it when you build), but it doesn't do anything except prevent certain combos of device and API level from building due to a misconfigured drop-down in the UI (to be fair I think this only affected certain "preview" devices IIRC.)

    I will also point out it's really bad that "Connect IQ System 5" has two meanings as far as API level goes, depending on what kind of device you have:

    - If it's a 3.x device, it means 3.3 or higher

    - If it's a 4.x device, it means 4.1 or higher

    IMO, this leads to all sorts of issues...

    - ...with documentation, where a field or function will be specified as having a "minimum API level" or "first appeared in API X". Some System 5-only field will have a minimum API level of "3.3" in the docs, which wrongly suggests that 4.0 also supports it. This isn't a huge deal as long as you know what they *really* meant...

    - ...with the minimum API level in manifest.xml. (How do I specify that I only want to support devices which have System 5? If I specify a minimum level of 4.1, this incorrectly excludes 3.3 devices/firmware. If I specify a minimum level of 3.3, this *seems like* it incorrectly includes 4.0 devices/firmware.) In this case it seems like the "minimum API level" is completely broken now, unless there's some internal magic to treat "3.3" in a special way.

    I'm not sure why this specific issue is never discussed, TBH.

  • Yes is up-to-date I think and Yes on compiler.json the min API level for fenix6pro is 3.2.6.

    On vscode the execution command is:

    java -Xms1g -Dfile.encoding=UTF-8 -Dapple.awt.UIElement=true -jar /Users/ovanni/Library/Application Support/Garmin/ConnectIQ/Sdks/connectiq-sdk-mac-4.1.4-2022-06-07-f86da2dee/bin/monkeybrains.jar -o bin/lmap_01.prg -f /Users/ovanni/garmindev/repo/lmap/lmap_01/monkey.jungle -y /Users/ovanni/garmindev/keys/developer_key.der -d fenix6xpro_sim -w

    On the manifest.xml in the monkeys project the api level is 3.3.0

    The point was the documentation I saw this:

    Connect IQ Compatible Devices

    With 3.3.0 as min API level and this led me to a great headache Slight smile

    I solved removing and re-installing the sdk device.

    thank you!