Garmin Swim 2 app development and SDK version

I would like to experiment with creating an app for the Garmin Swim 2 which uses SDK 1.4.0. The oldest SDK shown by my Connect IQ app running on my Ubuntu desktop is 3.1.8.

How do I get the proper SDK? 

  • You can use any current SDK to build for the Swim 2 (or any CIQ device) Don't confuse the version of CIQ on a device with the SDK version you are using.

  • I did try using Connect IQ 4.1.5, 4.1.3, and 3.2.5 as the default SDK specified in the sdkmanager and the Garmin Swim 2 did not appear on the list of possible devices in Monkey C: Edit Products. A whole bunch of other Garmin devices do appear.

  • What kind of app is it? Gamin Swim 2 only supports watch faces.

    On Windows, see %APPDATA%\Garmin\ConnectIQ\Devices\garminswim2\compiler.json - appTypes

  • Use 4.1.5 and make sure you don't have the min SDK/API Level for your app set to something like 3.x.x. 

    The Swim2, like the fr45, only supports watch faces.  No device apps, widgets, or data fields.

  • Thanks, this worked.
    For posterity, 3.x.x or greater did not work.

  • Yes, because the fr45 and Swim 2 are CIQ 1.4.x, as are things like the va,fr23x, fr630, fr920, fenix3.

    Some like the va-hat and fr375 are ciq 2.x.x, etc, and setting 3.3.x can cause issues with ciq 4.0.x.

    I always use a min SDK/API level of 1.2, and remove others as targets and use "has" where needed.

  • setting 3.3.x can cause issues with ciq 4.0.x

    To clarify this, since Garmin won't, Garmin has basically defined "CIQ System 5" as:

    - CIQ 3.3 for 3.x devices

    - CIQ 4.1 for 4.x devices

    (The reason for this is that devices which launched with CIQ 3 will never get CIQ 4, but Garmin still wants to have a common "new" set of features that applies that both CIQ 3.x devices and CIQ 4.x devices.)

    So there's a bunch of features that are only available for System 5, but the API docs for them always say "Since: CIQ 3.3"

    The problem is that in this case, "Since: CIQ 3.3" *really* means:

    - Since CIQ 3.3, for CIQ 3.x devices

    - Since CIQ 4.1, for CIQ 4.x devices

    What does this have to with minimum API level in the manifest?

    There's no way to use minimum API level to include System 5 devices/firmware, and only System 5 devices/firmware.

    - If you set it to 3.3.x, you'll incorrectly include 4.0 devices

    - If you set it to 4.1.x, you'll incorrectly exclude 3.3 devices

    This also means that if you want to publish an app which *relies* on a System 5 feature (as an integral part of its functionality), there's no user friendly way to do this (i.e. by excluding their devices from the store.) If you use a low minimum API level like 1.2 and only select target devices which *may* have System 5 firmware, then you'll still have to use has at runtime to make sure that System 5 feature is available. So what do you do if it that feature is unavailable at runtime? Display an error message, apologize, and ask the user to uninstall the app?