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

  • No problem!

    Yeah that's why I think you should comment on the linked bug report. Maybe if enough devs complain, the CIQ team will support distributing old device files.

    At the very least they might understand that several devs have a reason to want to build with older SDKs.

  • Done. Thaks for the additional prompt.

  • With the 8.1 device files there is still the Forerunner 165 oddity. You still can't use drawAngledText() and drawRadialText() at least in the Sim. I'm not sure what happens when you compile with 8.1 for a real device. So in that case it perfectly makes sense to keep on using 7.x. As this topic is now more that 6 weeks old, I come to the conclusion that these text functions were removed on purpose to differentiate between entry level product and more expensive devices.

  • So in that case it perfectly makes sense to keep on using 7.x.

    But using SDK 7.x won't help at all, as it's the lack of the drawRadialText and drawAngledText symbols in the device files which is the issue.

    With the 8.1 device files there is still the Forerunner 165 oddity. You still can't use drawAngledText() and drawRadialText() at least in the Sim. I'm not sure what happens when you compile with 8.1 for a real device. So in that case it perfectly makes sense to keep on using 7.x.

    It's very strange that even Garmin admits this was done deliberately, but won't explain why (well, the no explanation part isn't that strange).

    The 8.0.0-beta SDK changelog says:

    > Disable radial/angled text drawing if a product does not have a GPU.

    But then the FR165 22.24 changelog says:

    > Fix some Connect IQ app crashes when drawing radial or angled text.

    But as you pointed out, the device files haven't been updated yet.

    This isn't the first time Garmin has had to walk back some change which accidentally broke CIQ. They were supposed to change Enduro 2's part number to be the same as Fenix 7X's part number on the real Enduro 2 device, but they didn't (both part numbers were part of the same fenix7x CIQ device). Unfortunately they did remove the Enduro 2 part number from the CIQ device files, which meant nobody could release apps for Enduro 2 for several months. They tried to fix this situation by finally changing the Enduro 2 part number to Fenix 7X's part number on the real device, but they didn't realize that users would still be unable to see the Enduro 2 device icon and name in the CIQ store. Finally they undid everything on the CIQ side by restoring the separate part number for Enduro 2.

    I'm not sure what happens when you compile with 8.1 for a real device.

    Whether or not this has been truly fixed for a real device, given that the fr165 device files are still wrong (i.e. missing drawRadialText/drawAngledText), I think the solution is to add --disable-api-has-check-removal to the compiler options. (At least for apps which use has checks like Graphics.Dc has :drawRadialText and Graphics.Dc has :drawAngledText in the first place.) This will ensure that API-related has checks will be evaluated at run time and not compile time.

    If an app just assumes that the target device (including fr165) has those symbols without checking, then there's really no solution to your problem, as it will crash on fr165's without the fix. And you can't force them to get the fix until fr165/compiler.json's firmwareVersion is updated to 2224 (22.24) or higher, assuming 22.24 really has the fix.

    For example SDK 7.1.1 has a broken device version check, which means it will build for CIQ 5.1.0 devices like fr165 (even though Garmin wants us to use SDK 8.1.0 for those devices). Even so, if you build with that SDK, the simulator will still act like drawRadialText/drawAngledText are missing for fr165, because they are (they're missing in the device files.)