Issue with fenix 8 simulator

With the release of the new Fenix 8 models, I cannot launch the simulator for these new models - all previous models we supported still launch fine, but the new ones crash on launch with the below error:

"The currently running device does not support this function. Please see if there is a device update in the SDK manager".

The below is from terminal, trigged when attempting to create a menu2:

Error: System Error
Details: Failed invoking <symbol>
Stack:
- setTitle() at 704b03c0.mb:3079 0x30006a2c
- initialize() at 704b03c0.mb:2986 0x30006d51

There is no device update, I am using sdk version 6.3.0, all previous models compile and display correctly, the new fenix 8 models compiles and crashes.

Any help with be appreciated.

Top Replies

  • , developing for the Fenix 8 requires SDK 7.3.0 or greater. There are checks in the compiler and simulator that should be catching using the wrong SDK, but I don't recall off the top of my head…

All Replies

  • Where/when are you trying to create the Menu2?  The menu2 sample in the SDK runs fine for me with the new devices, and I use Menu2 in a number of my apps (all different app types) that work fine with the new devices and have already been updated in the app store.

  • …shouldn‘t he use SDK 7.3 for new devices…?

  • I figured that's what he meant and it was a typo....

    If you try to use 7.2.1 you get this message:

    ERROR: Device 'fenix847mm' requires API Level '5.0.1'. The current SDK supports up to API Level '5.0.0'. Try updating your SDK using the Connect IQ SDK Manager.

    I just re-downloaded 6.3.0 and there's not a similar error, so that could be the problem.

    ----

    but I tried some of my apps with the 6.3.0 SDK and the f8 devices, and not seeing the crash there..

    ----

    Ok, I see it when trying to use on-device settings with a watch face with 6.3.0 and an f8 target...There was a popup (on Windows) saying the function wasn't supported on an f8 target...So the same as the OP

  • I figured that's what he meant and it was a typo....

    If you try to use 7.2.1 you get this message:

    ERROR: Device 'fenix847mm' requires API Level '5.0.1'. The current SDK supports up to API Level '5.0.0'. Try updating your SDK using the Connect IQ SDK Manager.

    I just re-downloaded 6.3.0 and there's not a similar error, so that could be the problem.

    I think the problem is that the min API level support check is implemented in the compiler, and older compilers falsely equate the SDK version with the highest API version supported by the SDK (because that's how it actually was for a long time, until SDK 6.* was released, and the SDK versions aligned with the system level instead.) You can see this if you try to compile fenix847mm with SDK 4.2.4 - you'll get the following error message:

    > ERROR: Device 'fenix847mm' requires an SDK version of 5.0.1 or greater to be compiled. The current SDK version is 4.2.4. Update your SDK using the Connect IQ SDK Manager.

    Note that the error message in 7.2.1 refers to "API Level", while the error message in 4.2.4 refers to "SDK version".

    In other words, newer compilers (like 7.2.1) recognize that fenix847mm requires at least API level 5.0.1, but older compilers think fenix847mm requires at least SDK 5.0.1 (which is obviously wrong for many reasons, such as the fact there never was an SDK 5.*, and the fact that SDK 6.* came out over a year ago, long before API level 5.0.1)

    You can also see the same thing if you try to build fr955 in SDK 4.2.4 (as the fr955 device file has been updated to API 5.0):

    > ERROR: Device 'fr955' requires an SDK version of 5.0.0 or greater to be compiled. The current SDK version is 4.2.4. Update your SDK using the Connect IQ SDK Manager.

    Again, clearly the check was supposed to require the supported API version to be >= 5.0.0 (i.e. SDK >= 7.1), as opposed to requiring the SDK version to be >= 5.0.0.

    I filed a bug report about this months ago, but if the problem really is in old compilers, there might not be a way around it (unless something can be done in the device files):

    Building CIQ 5 devices (e.g. fr955) in SDK 4.2.4 results in error claiming "SDK 5.0.0 or greater" is required - shouldn't this be SDK 7.1.0?

     I think the changed behavior of the newer compilers (as in 7.2.1, described above), proves that my bug report is valid.

  • , developing for the Fenix 8 requires SDK 7.3.0 or greater. There are checks in the compiler and simulator that should be catching using the wrong SDK, but I don't recall off the top of my head which SDK those were added. I'll get a ticket created to double check on things, as based off the discussion our messages are a bit wrong.

  •  please see the bug report I linked in the comment above you:

    https://forums.garmin.com/developer/connect-iq/i/bug-reports/building-ciq-5-devices-e-g-fr955-in-sdk-4-2-4-results-in-error-claiming-sdk-5-0-0-or-greater-is-required---shouldn-t-this-be-sdk-7-1-0

    Like I said, I'm 100% sure the problem is that the check is in the compiler, and older compilers (e.g. SDK 6.* and lower) act as if the supported API level is the same as the SDK version, which is no longer true.

    For example, if you try to build fenix847mm with SDK 7.2.1, you get the following error:

    > ERROR: Device 'fenix847mm' requires API Level '5.0.1'. The current SDK supports up to API Level '5.0.0'. Try updating your SDK using the Connect IQ SDK Manager.

    If you try to build fenix847mm with SDK 6.3.0, you get no error (this is obviously invalid behavior - there should be an error).

    If you try to build fenix847mm with SDK 4.2.4, you get the following error:

    > ERROR: Device 'fenix847mm' requires an SDK version of 5.0.1 or greater to be compiled. The current SDK version is 4.2.4. Update your SDK using the Connect IQ SDK Manager.

    Note the difference in wording: "requires an SDK version" vs "requires "API level". Clearly the check has been in compiler for a very long time (since at least 4.2.4, but probably before that), but the problem is that the check no longer works bc of the outdated assumption that the supported API level is the same as the SDK version.

    In my bug report, I reported that fr955 can be built with SDK 6.*, but it seems that it really should require SDK 7.1.

    Again, if you build fr955 with SDK 4.2.4, you get:

    > ERROR: Device 'fr955' requires an SDK version of 5.0.0 or greater to be compiled. The current SDK version is 4.2.4. Update your SDK using the Connect IQ SDK Manager.

  • TL;DR for API 5 devices, the SDK version checks are working in the newer compilers (e.g. 7.2.1) but not the older compilers (e.g. 6.3.0), except for the really* old compilers (such as SDK 4.2.4), due to the fact that older compilers made an assumption about API level and SDK version which is no longer true.

  • I don't know why 6.3.0 isn't generating that error, but the 7.x compilers are working as intended. The run-time check in the simulator is incorrectly worded. It should say to update to the latest SDK, not the latest device configurations. 

  • I don't know why 6.3.0 isn't generating that error, but the 7.x compilers are working as intended.

    Again, it's clearly bc compilers older than 7.* assume that "SDK version = API version" (*), which is why SDK 4.2.4 won't build fr955 (API 5.0.0) or fenix847mm (API 5.0.1), but SDK 6.* will build either of those devices.

    (* this is only correct for SDKs up to and including 4.*. Starting with SDK 6.*, it's incorrect, as the SDK version numbering changed to align with the system level)

    It also explains why the wording of the error message changed from

    (SDK 4.2.4) ERROR: Device 'fenix847mm' requires an SDK version of 5.0.1 or greater to be compiled.

    to

    (SDK 7.2.1) ERROR: Device 'fenix847mm' requires API Level '5.0.1'. The current SDK supports up to API Level '5.0.0'. Try updating your SDK using the Connect IQ SDK Manager.

    So to be clear, I think the problem exists in all the 6.* SDKs. It was clearly fixed in the 7.* compilers (which work as intended as you said.)