Can no longer build all models with SDK 7.4.3

Since updating the SDK manager, and downloading SDK 8.1.0, I can no longer build all watch models that I support with SDK 7.4.3

I receive the following error from attempts to build newer watch models:

[{
"resource": "/c:/Users/Jeff/Google Drive/Sailing/Sail2WinApp/Sail2Win/",
"owner": "monkeyc",
"severity": 8,
"message": "Device 'fr255' requires API Level '5.1.0'. The current SDK supports up to API Level '5.0.1'. Try updating your SDK using the Connect IQ SDK Manager.",
"startLineNumber": 1,
"startColumn": 1,
"endLineNumber": 1,
"endColumn": 9007199254740992
}]

I'm not a big fan of using the newest SDK. I'd rather let others find the newly introduced bugs, yet it's looking like I'm being forced to use SDK 8.1.0

Please let me know if there's a way that I can continue to use SDK 7.4.3

Thanks

Jeff

  • You got device updates for the System 8 devices, like the fr255.  Unless you have the old device configs stored off someplace. you need to use the 8.1.0 SDK.

    I switched to 8.1.0 when it came out and it's been working fine for me.

  • Thanks Jim.

    It's rather frustrating to have a new SDK break the ability to build with the LAST RELEASED SDK.

    Looks like a real miss, or some broken thinking going on.

  • Actually nothing odd.  This should have been the case whenever a new System level is released.

  • It's worth reading the forum, because this topic came up a coupe of times in the past weeks, and at least once in the last few days

  • Thanks to both of you.

  • You may want to read and comment on this related "feature request" (really a request for clarification), where Richard.ConnectIQ explains the rationale behind these device version checks which force you to use a newer SDK.

    https://forums.garmin.com/developer/connect-iq/i/bug-reports/given-that-a-newer-sdk-is-required-to-build-for-ciq-5-x-devices-what-does-this-mean-for-existing-apps-on-device-that-were-upgraded-from-ciq-4-to-ciq-5-e-g-fr955-fenix-7-etc

    Here's a relevant comment of his:

    There isn't a system in place to distribute old device configurations files. The goal of the device configuration files is to maintain parity with the physical devices firmware releases. If someone had old device configuration files with CIQ 4 then it should work the same as before. As soon as you update your device configurations and it has a newer CIQ version then the compiler will see that it has access to newer APIs that weren't previously available. There also isn't a system in place to build for a CIQ version while excluding knowledge of newer APIs as this is fundamental to how the compiler checks for API support.

    Is there a specific use case that you believe would be beneficial? I don't believe it is likely that a system will be built to distribute old device configurations, but if there are common enough use-cases then it is worth opening discussion with development to see if a solution can be found.

    To be clear, as jim_m_58 said, if you had old device files, you would be able to use older SDKs to build for those devices.

    The use case that comes up over and over again is "I don't want to use the latest SDK [yet]".

  • Thanks for this.

    As I understand it, all SDKs that I've downloaded over time have their own device files, so those files should be available, yet when I select the last SDK, those device files are not selected to match the selected SDK. What would I have to do with the older device files to cause them to be used ?

  • no, device files are not part of any sdk. They live in a separate folder next to the SDK-s, and all SDK version use the same device files (whatever is in the directory)

  • all SDKs that I've downloaded over time have their own device files,

    No, this is actually the crux of the problem.

    The SDK manager only downloads the latest device files. The device files aren't versioned, so you're stuck with whatever you have.

    SDKs are in .../connectiq/sdks and there's a separate folder for every sdk version

    Devices are in ../connectiq/devices, which only contains the latest files that were downloaded by the sdk manager

    That explains the comment from Richard.ConnectIQ talks about how there's currently no way for devs to get the old device files.

    Some devs will edit the device files by hand, but I don't think this is a good idea. I don't want to get into the weeds, but I can easily see several scenarios where this could break things. (Indeed the CIQ team explicitly said not to do this)

  • Ahhh... understood.

    I'd have to be backing up the directory where the device files are held and go back to an old version to run an old version of the SDK successfully.

    Thanks for clarifying.