Which models support API level 5.0.0 or higher? Is there a list somewhere?
Which models support API level 5.0.0 or higher? Is there a list somewhere?
Note, devices with 5.1.0 are different and require the 8.1.0+ SDK
I have an Edge 1050 with CIQ 5.1 where IQ apps compiled with SDK 7.3 run without any problems!
I think it's more like only…
That can't be true... the Garmin store is full of CIQ apps published in the past before SDK 8 was around, and those all work fine on my FR955 and my EDGE 1050, both of which are API 5.1 devices. You know…
I think there is a misunderstanding:
This thread has started with:
Which models support API level 5.0.0 or higher? Is there a list somewhere?
Jim he has linked a list of real devices and their CIQ level…
That can't be true... the Garmin store is full of CIQ apps published in the past before SDK 8 was around, and those all work fine on my FR955 and my EDGE 1050, both of which are API 5.1 devices. You know this... so I must not understand what you mean. Or do you think all those apps will stop working on newer Garmin devices until the developer re-publishes their apps using SDK 8?
He's saying that if you now build an app for a CIQ 5.1.0 device (after updating the device files, and assuming compiler.json indicates a connectIqVersion of 5.1.0), you must use SDK 8.1.0.
Older SDKs (>= 7.2.0 and < 8.0.0) will fail to build with the error message that was already posted in this thread above.
Very old SDKs (< 7.2.0) will work, but that's actually a bug. You will find that these SDKs assume that they're able to build for any device whose API level is greater or equal to the SDK version (it's a very old assumption which used to be true.) So for example, SDK 6.2.0 thinks it can build for any CIQ API level >= 6.2.0, SDK 4.2.4 thinks it can build for any CIQ API level >= 4.2.4, etc.
What SDKs are supposed to be doing is checking bin/compilerinfo.xml (in the SDK folder), which contains targetSdkVersions, a list of supported API versions for that SDK. And you will find that is exactly what happens with SDK 7.2.0 and higher
I think there is a misunderstanding:
This thread has started with:
Which models support API level 5.0.0 or higher? Is there a list somewhere?
Jim he has linked a list of real devices and their CIQ level and answered:
Note, devices with 5.1.0 are different and require the 8.1.0+ SDK
And my answer was: „Devices with 5.1.0 do not require apps with 8.1.0 build“.
It‘s all about real devices. And devices with 5.1.0 do work with apps built with older SDKs - as Dave commented, too.
Jim he has linked a list of real devices and their CIQ level
That list of “real devices” is similar to the corresponding information in the SDK device files. There’s nothing magical about that list of devices as user-readable documentation, as opposed to the machine-readable information in the SDK device files.
I don’t know why you think that list (or the devices in it) are any “realer” than the info in the CIQ SDK device files. Both lists have the same concept of “CIQ devices”, which sometimes group several actual “real models” into a single CIQ device.
Like how Tactix is never a separate CIQ device, but it’s always lumped in with a Fenix CIQ device. This can be seen in both the list of real devices (as you call it) and the CIQ SDK device files. Nobody in the real world will say that a Fenix is the same as a Tactix though.
Like how “Edge 820 / Explore” (which means Edge 820 and Edge 820 Explore) is a single device for the purposes of CIQ, even though they are 2 distinct models in real life. Edge 820 supports power meters, and Edge 820 Explore does not, which is rather inconvenient if you wanted to make a CIQ app which requires power meter support, as you cannot include one of those models and exclude the other.
Speaking of “real devices”, there’s no list that can tell you what firmware / CIQ level is actually on the “real devices”, only what the CIQ ecosystem expects (or enforces) to be on those devices at a minimum, if you want to install CIQ apps. A user could’ve bought an fr955 on release and never updated, meaning they would have CIQ 4.x instead of CIQ 5.1.0. Ofc Garmin will now enforce that you have to have CIQ 5.1.0 on your fr955 if you want to install an app (or update to an app version) that was built today.
Note, devices with 5.1.0 are different and require the 8.1.0+ SDK
And my answer was: „Devices with 5.1.0 do not require apps with 8.1.0 build“
Well, it all depends on how you interpret that statement.
Does every CIQ 5.1.0 device only work with apps that were built with 8.1.0 SDK? Clearly not, as every device that now has 5.1.0 once had 5.x and many had 4.x. So yeah, in the past you could build apps for CIQ 4.x or 5.x with SDKs earlier than 8.1.0, and those apps should continue to work.
Does every CIQ 5.1.0 device now require the 8.1.0 SDK if you want to build an app for it today? Yes, assuming the corresponding device files have been updated to API level 5.1.0. Why is this the case? Because no SDK other than 8.1.0 will allow you to build for such a device (except for the pre-7.2.0 SDKs which have a bug in this check). And furthermore, if such a device has not been updated to CIQ 5.1.0, users will be unable to install apps that were built today.
It‘s all about real devices. And devices with 5.1.0 do work with apps built with older SDKs - as Dave commented, too.
And my point is that if you try to build for a 5.1.0 device *today* (with up-to-date device files), you will find that you are unable to do so with an older SDK, regardless of whether the PRG produced with that SDK would work on the 5.1.0 device or not.
It’s also well-accepted that to build for a device that was *released* with CIQ 5.0.0 or 5.0.1 (e.g. fenix8*), you would need to use one of the SDKs which had support for those CIQ levels. Nobody expects an older SDK to work with a new device that didn’t exist when the old SDK was released (although it’s possible that it might work in some cases, idk)
I think the big grey area is that we have a ton of existing CIQ 4.x devices which have now received a major CIQ update (to CIQ 5.x), something which hasn’t happened since the move from CIQ 1 to CIQ 2. (CIQ 2 devices never got CIQ 3, and CIQ 3 devices never got CIQ 4.)
You will also see that Garmin employees (with ConnectIQ in their username) have said “you need the latest SDK to build for devices with CIQ 5.x.x” (back when 5.0.0 or 5.0.1 was the latest API level.) Ofc this is a somewhat confusing statement, given that we all know you can continue to run apps built with an older SDK on a device that now has CIQ 5.x.
But people have reported bugs / crashes when building with an older SDK (like 6.4.2) for a newer device with CIQ 5.x (either in the sim or the real device), and whenever this has come up, Garmin employeees with ConnectIQ in their username have said “you should build with the latest SDK for CIQ 5.x.”
These somewhat ambiguous and confusing statements from Garmin are what led me to open that “bug report” (request for explanation) in the first place.
Again you can read the replies from Richard.ConnectIQ in that “bug report” to see Garmin’s perspective. After all, it’s their ecosystem. I have to say that I’m not quite satisfied with their answers. Everything they say pretty much boils down to “yes, old apps will continue to work on devices with new CIQ API”, but “we still require you to use the newest SDK to build for devices with the newest CIQ API”. There is an obvious contradiction here: if old apps continue to work on devices with a new CIQ API, why not allow older SDKs to build for newer CIQ API levels? They tried to explain this in a few different ways, but maybe I’m just not getting it.
I mean, I do understand the motivation for wanting to force devs to use the latest SDK, but I’m just not sure under what precise circumstances (if any) that building with an old SDK will cause a device with newer CIQ API level to crash.
"Does every CIQ 5.1.0 device now require the 8.1.0 SDK if you want to build an app for it today?"
This is misleading to me. Maybe to others. I have the lastest SDK downloaded from the SDK Manager. It regularly updates device files as well as downloading the latest SDK. I have SDK 8.1.0. I build my data field for many devices, many of which are API 5.1 devices, like my EDGE 1050.
So to test what it appears you are claiming... I opened my SDK Manager and selected SDK 7.4.3 as the Current SDK. Then I built my field for API 5.1 devices using SDK 7.4.3. No issues or errors at all. I can publish that build and it works, on my 5.1 devices.
So, what did I miss in what you all are say about this not being possible?
So to test what it appears you are claiming... I opened my SDK Manager and selected SDK 7.4.3 as the Current SDK. Then I built my field for API 5.1 devices using SDK 7.4.3. No issues or errors at all. I can publish that build and it works, on my 5.1 devices.
So, what did I miss in what you all are say about this not being possible?
TL;DR it's another CIQ bug. Thank you for bringing this up.
It looks like you are referring to "Monkey C: Export Project" and not "Monkey C: Build Current Project".
I double-checked and it looks like there is a bug in the compiler device CIQ version check. If you export a project, the compiler does not perform the check. If you build a project for a single 5.1.0 device (using "Monkey C: Build Current Project". or "Monkey C: Build For Device"), you will see the compiler error that I have posted more than once, with screenshot evidence.
So let me amend my statement: Garmin clearly *intends* to prevent this from being possible.
This isn't the first time they've had a bug in the device CIQ version check. Every compiler up to 7.1.* has a bug in the check where it incorrectly assumes it can build for any CIQ API level greater or equal to its own version, meaning that for example, SDK 6.4.2 thinks that it has support for CIQ 5.* (since 5 is less than 6).
No issues or errors at all. I can publish that build and it works, on my 5.1 devices.
I don't deny that if you are somehow able to build for a device configured with a newer CIQ version with an older SDK that doesn't support version, it might work in some cases (or even all cases?). I *think* it depends on what features of the device you use. Others have accomplished this by editing their device files. Or you could use an SDK that's old enough that the version check doesn't work properly (anything older than 7.2). I have to admit I've done it in the past, for a simple data field that doesn't use any fancy features.
All I can say is that Garmin says you are not supposed to do this and it's not supposed to work. Again you can read the bug report thread I linked with comments from Richard.ConnectIQ who relayed feedback from the Connect IQ team.
Go ahead and read the comments from people who actually work for Garmin and worked on Connect IQ.
Like I said, I'm not 100% satisified with their answers, but they said what they said.