SDK: 8.2.3 (I think this problem has existed since 8.0.0)
OS: Windows (but I'm sure it doesn't matter)
Background:
Fenix 8 and newer devices allow CIQ watchfaces to use the *built-in* watchface config UI, rather than simply pushing their own settings view.
It was seemingly made clear from the start, based on the docs, that this feature is only for Fenix 8 and newer, even if older devices (like FR955/FR965) have CIQ 5.1.0 support.
https://developer.garmin.com/connect-iq/core-topics/editing-watch-faces-on-device/
Watch Face Configurations
Since API level 5.1.0
The fēnix 8 and newer wearables have an on-device watch face editor.
https://developer.garmin.com/connect-iq/api-docs/Toybox/Application/WatchFaceConfig.html
- Enduro
3
- fēnix® 8 43mm
- fēnix® 8 47mm / 51mm / tactix® 8 47mm / 51mm / quatix® 8 47mm / 51mm
- fēnix® 8 Pro 47mm / 51mm / MicroLED
- fēnix® 8 Solar 47mm
- fēnix® 8 Solar 51mm / tactix® 8 Solar 51mm
- fēnix® E
- Forerunner® 570 42mm
- Forerunner® 570 47mm
- Forerunner® 970
- Venu® 4 41mm
- Venu® 4 45mm
- Venu® X1
- vívoactive® 6
Indeed, searching ConnectIQ\Devices\*.api.debug.xml for symbol="WatchFaceConfig" only returns results for the devices listed above.
The Problem
The ConfigurableWatchFace SDK sample has the sole purpose of showcasing WatchFaceConfig. But the supported devices list in manifest.xml seems to include *all* CIQ 5.1.0 devices, including devices like FR255, FR955, FR265, FR265, Fenix 7, etc. which do not support WatchFaceConfig.
<iq:products>
<iq:product id="enduro3"/>
<iq:product id="epix2"/>
<iq:product id="epix2pro42mm"/>
<iq:product id="epix2pro47mm"/>
<iq:product id="epix2pro51mm"/>
<iq:product id="fenix7"/>
<iq:product id="fenix7pro"/>
<iq:product id="fenix7pronowifi"/>
<iq:product id="fenix7s"/>
<iq:product id="fenix7spro"/>
<iq:product id="fenix7x"/>
<iq:product id="fenix7xpro"/>
<iq:product id="fenix7xpronowifi"/>
<iq:product id="fenix843mm"/>
<iq:product id="fenix847mm"/>
<iq:product id="fenix8solar47mm"/>
<iq:product id="fenix8solar51mm"/>
<iq:product id="fenixe"/>
<iq:product id="fr165"/>
<iq:product id="fr165m"/>
<iq:product id="fr255"/>
<iq:product id="fr255m"/>
<iq:product id="fr255s"/>
<iq:product id="fr255sm"/>
<iq:product id="fr265"/>
<iq:product id="fr265s"/>
<iq:product id="fr955"/>
<iq:product id="fr965"/>
<iq:product id="marq2"/>
<iq:product id="marq2aviator"/>
<iq:product id="venu3"/>
<iq:product id="venu3s"/>
<iq:product id="vivoactive5"/>
</iq:products>
If you run the sample on one of those pre-Fenix 8 devices (real or simulated) - such as fr955 - it will crash with a Symbol Not Found error at a line which references WatchFaceConfig. There is ofc no has check for the symbol access, since the only purpose of the sample is demonstrate WatchFaceConfig.
Suggested Resolution
Change manifest.xml in the ConfigurableWatchFace SDK sample so the list of supported devices reflects the devices which actually implement WatchFaceConfig.