Ticket Created
over 4 years ago

WERETECH-7133

Crash/exception when calling Application.Properties.setValue for a key which exists, but error says it doesn't

Original discussion thread: https://ciq.forums.garmin.com/developer/connect-iq/f/discussion/8237/unexpected-exception-from-application-properties-setvalue-on-fenix-5x

Watch face in store: https://apps.garmin.com/en-US/apps/4f03053e-9ecd-4721-abca-19ca7445f0fe

Test version of watch face in store (with 10kB reduced memory usage): https://apps.garmin.com/en-US/apps/cda199b4-9b63-47fa-9b3b-b7f1ddb02368

The problem seems to occur only for a store app, after sending new settings from Garmin Connect Mobile on iOS, to a D2 Charlie or Fenix 5X watch. Cases where it works:

  • In the simulator
  • For other watches
  • When sending new settings from Connect IQ Store app instead
  • When sending new settings from GCM on Android (at least no reports of crash in this case).

In the log file after crashing it says the error is an unhandled exception with message: Key does not exist in Application Properties

The exception occurs when this code is called from onUpdate() immediately after receiving new settings:

using Application.Properties as applicationProperties;

function clearExportImportStrings()
 {
  applicationProperties.setValue("EP", "");
  applicationProperties.setValue("EF", "");
  applicationProperties.setValue("EG", "");
 }

And all of those properties are defined in the properties.xml file. Here are my string, properties and settings files:

strings.xml
<strings>

<!-- 
    <string id="Unused1">X</string>
 -->
                
    <string id="Unused1">X</string>
    <string id="Unused2">X</string>
    <string id="Unused3">X</string>

    <string id="AppName">M1DebugTest</string>
<!-- 
    <string id="AppName">M1beta</string>
 -->

    <string id="BackgroundColorTitle">Background Color</string>
    
    <string id="TimeOnTitle">Time Display</string>
    <string id="TimeMilitaryFormatTitle">Time Add Leading Zero</string>
    <string id="TimeHourFontTitle">Time Hours Font</string>
    <string id="TimeMinuteFontTitle">Time Minutes Font</string>
    <string id="TimeItalicTitle">Time Custom Fonts Italic</string>
    <string id="TimeYOffsetTitle">Time Vertical Offset (+-120 pixels from centre)</string>
    
    <string id="SecondOnTitle">Seconds Display</string>
    <string id="SecondIndicatorStyleTitle">Seconds Indicator Style</string>
    <string id="SecondRefreshStyleTitle">Seconds Refresh Style</string>
    <string id="SecondColorTitle">Seconds Color</string>
    <string id="SecondColor5Title">Seconds Color at 5, 15, 25, 35, 45, 55 (overrides above)</string>
    <string id="SecondColor10Title">Seconds Color at 0, 10, 20, 30, 40, 50 (overrides above)</string>
    <string id="SecondColor15Title">Seconds Color at 0, 15, 30, 45 (overrides above)</string>
    <string id="SecondColor0Title">Seconds Color at 0 (overrides above)</string>
    <string id="SecondColorDemoTitle">Seconds Color Demo (overrides above to show all 60 colors)</string>
    <string id="SecondMoveInABitTitle">Seconds Move In A Bit (to be inside the ring display)</string>
    
    <string id="OuterOnTitle">Ring Display (outer ring around watchface)</string>
    <string id="OuterModeTitle">Ring Mode</string>
    <string id="OuterColorFilledTitle">Ring Color Filled</string>
    <string id="OuterColorUnfilledTitle">Ring Color Unfilled</string>

    <string id="FieldFontTitle">Field Font</string>
    <string id="FieldFontWeightTitle">Field Custom Fonts Weight</string>
    <string id="FieldFontCaseTitle">Field System Fonts Case</string>
    <string id="FieldFontNotSupportedTitle">Field Name Font When Custom Unsupported (day and month names)</string>
    <string id="FieldMoveBarOffColorTitle">Field Move Bar Off Color</string>
	<string id="FieldMoveBarAlertTriggerLevelTitle">Status Move Bar Alert Trigger Level (1-5)</string>
    <string id="FieldBatteryHighPercentageTitle">Status Battery High Percentage</string>
    <string id="FieldBatteryLowPercentageTitle">Status Battery Low Percentage</string>

    <string id="FieldManagementTitle">Field Management (turn off/on or retrieve the field settings below)</string>
    <string id="FieldNumberTitle">Field Number (1-8, each field has 6 elements below)</string>
    <string id="FieldYOffsetTitle">Field Vertical Offset (+-120 pixels from centre)</string>
    <string id="FieldXOffsetTitle">Field Horizontal Offset (+-120 pixels from centre)</string>
    <string id="FieldJustificationTitle">Field Horizontal Justification</string>
    <string id="FieldElement1Title">Element 1 (of field)</string>
    <string id="FieldElement2Title">Element 2 (of field)</string>
    <string id="FieldElement3Title">Element 3 (of field)</string>
    <string id="FieldElement4Title">Element 4 (of field)</string>
    <string id="FieldElement5Title">Element 5 (of field)</string>
    <string id="FieldElement6Title">Element 6 (of field)</string>

    <string id="ItemVisibilityTitle">Visible If ... (for item above)</string>
    <string id="ItemAlwaysOn">Always On</string>
    <string id="ItemColorTitle">Color (of item above)</string>

    <string id="FieldDoNotDisturbOn">Do Not Disturb On</string>
    <string id="FieldDoNotDisturbOff">Do Not Disturb Off</string>
    <string id="FieldAlarmOn">Alarm On</string>
    <string id="FieldAlarmOff">Alarm Off</string>
    <string id="FieldNotificationsPending">Notifications Pending</string>
    <string id="FieldNotificationsNone">No Notifications</string>
    <string id="FieldPhoneConnected">Phone Connected</string>
    <string id="FieldPhoneNot">Phone Not Connected</string>
    <string id="FieldLTEConnected">LTE Connected</string>
    <string id="FieldLTENot">LTE Not Connected</string>
    <string id="FieldBatteryHighOrMedium">Battery High Or Medium</string>
    <string id="FieldBatteryHigh">Battery High</string>
    <string id="FieldBatteryMedium">Battery Medium</string>
    <string id="FieldBatteryLow">Battery Low</string>
    <string id="FieldMoveBarAlertTriggered">Move Bar Alert Triggered</string>
    <string id="FieldMoveBarAlertNot">Move Bar Alert Not Triggered</string>

    <string id="DemoFontStylesTitle">Demo Font Styles (cycle through custom font styles)</string>
    <string id="DemoSecondStylesTitle">Demo Second Styles (cycle through second indicator styles)</string>
    <string id="DemoDisplayTitle">Demo Display (show all colors, shapes and icons)</string>

    <string id="GlanceProfileTitle">Gesture Profile (0 for none, or profile number for gesture)</string>

    <string id="ProfileNameTitle">Profile Name (limited to 20 characters)</string>
    <string id="ProfileManagementTitle">Profile Management (save/load settings above to watch/profile)</string>
    <string id="ProfileNumberTitle">Profile Number To Save/Load (1-24) (or presets 25+)</string>
    <string id="ProfileDaysTitle">Profile Activation Days (of week 1-7, e.g. 456 or 71 or 1234567)</string>
    <string id="ProfileStartTimeTitle">Profile Start Time (HH:MM activate from this time)</string>
    <string id="ProfileEndTimeTitle">Profile End Time (HH:MM activate until this time)</string>
    <string id="ProfileBlockTitle">Profile Block Random (while this profile is active, block random events)</string>
    <string id="ProfileRandomTitle">Profile Random Events (number per day for this profile)</string>

    <string id="DemoProfilesTitle">Demo Profiles (cycle profiles in specified range, if no other profile active)</string>
    <string id="DemoProfilesRangeTitle">Demo Profiles Start And End (e.g. 25-99 for preset profiles)</string>

    <string id="ExportProfileTitle">Export/Import Profile Text (use profile management above)</string>
    <string id="ExportFieldsTitle">Export/Import Fields Text (use profile management above)</string>

    <string id="FieldRetrieveSettings">Retrieve (settings will not be updated)</string>

    <string id="ProfileUpdateSettings">Update Watch Settings</string>
    <string id="ProfileRetrieveSettings">Retrieve Watch Settings</string>
    <string id="ProfileSave">Save Profile</string>
    <string id="ProfileLoad">Load Profile</string>
    <string id="ProfileCopy">Copy Profile To Watch Settings</string>
    <string id="ProfileExport">Export Profile (to text fields below)</string>
    <string id="ProfileImport">Import Profile (from text fields below)</string>
    <string id="ProfileWasActive">Profile Was Active (settings will not be updated)</string>

    <string id="MenuNotSet">-Not Set-</string>
    <string id="MenuBlank"> </string>
    <string id="MenuLine">------------------------------------</string>
    <string id="MenuSeparators">SEPARATORS</string>
    <string id="MenuTimeDate">TIME AND DATE</string>
    <string id="MenuValues">VALUES AND BARS</string>
    <string id="MenuIcons">SHAPES AND ICONS</string>
    <string id="MenuCustomFont">CUSTOM FONT</string>
    <string id="MenuSystemFonts">SYSTEM FONTS</string>  
    <string id="MenuBright">BRIGHT COLORS</string>
    <string id="MenuDim">DIM COLORS</string>
    <string id="MenuPale">PALE COLORS</string>
    <string id="MenuPalest">PALEST COLORS</string>
    <string id="MenuDark">DARK COLORS</string>
    <string id="MenuDarkest">DARKEST COLORS</string>
    
    <string id="Color0">Black</string>
    <string id="Color1">Dark Gray</string>
    <string id="Color2">Light Gray</string>
	<string id="Color3">White</string>
    
    <!-- Bright Colors -->
    <string id="Color4">Yellow</string>
    <string id="Color5">Lime</string>
    <string id="Color6">Bright Green</string>
    <string id="Color7">Green</string>
    <string id="Color8">Spring Green</string>
    <string id="Color9">Bright Aquamarine</string>
    <string id="Color10">Cyan</string>
    <string id="Color11">Azure</string>
    <string id="Color12">Denim Blue</string>
    <string id="Color13">Blue</string>
    <string id="Color14">Electric Indigo</string>
    <string id="Color15">Violet</string>
    <string id="Color16">Magenta</string>
    <string id="Color17">Pink</string>
    <string id="Color18">Torch Red</string>
    <string id="Color19">Red</string>
    <string id="Color20">Strong Orange</string>
    <string id="Color21">Orange</string>

	<!-- Dim Colors -->
    <string id="Color22">Olive Green</string>
    <string id="Color23">Fruit Salad</string>
    <string id="Color24">Tradewind Blue</string>
    <string id="Color25">Rich Blue</string>
    <string id="Color26">Tapestry Purple</string>
    <string id="Color27">Blossom Red</string>

    <!-- Pale Colors -->
    <string id="Color28">Lemon</string>
    <string id="Color29">Green Yellow</string>
    <string id="Color30">Screamin' Green</string>
    <string id="Color31">Aquamarine</string>
    <string id="Color32">Baby Blue</string>
    <string id="Color33">Maya Blue</string>
    <string id="Color34">Neon Blue</string>
    <string id="Color35">Pale Violet</string>
    <string id="Color36">Flamingo</string>
    <string id="Color37">Brilliant Rose</string>
    <string id="Color38">Tomato</string>
    <string id="Color39">Pale Orange</string>
    
    <!-- Palest Colors -->
    <string id="Color40">Canary</string>
    <string id="Color41">Mint</string>
    <string id="Color42">Pale Blue</string>
    <string id="Color43">Lavender</string>
    <string id="Color44">Rose</string>
    <string id="Color45">Lilac</string>

    <!-- Dark Colors -->
    <string id="Color46">Citrus</string>
    <string id="Color47">Limeade</string>
    <string id="Color48">Dark Green</string>
    <string id="Color49">Green Haze</string>
    <string id="Color50">Persian Green</string>
    <string id="Color51">Cobalt</string>
    <string id="Color52">Dark Blue</string>
    <string id="Color53">Purple</string>
    <string id="Color54">Dark Magenta</string>
    <string id="Color55">Lipstick</string>
    <string id="Color56">Dark Red</string>    
    <string id="Color57">Tawny Orange</string>

    <!-- Darkest Colors -->
    <string id="Color58">Verdun Green</string>
    <string id="Color59">Darkest Green</string>
    <string id="Color60">Sherpa Blue</string>
    <string id="Color61">Navy Blue</string>
    <string id="Color62">Tyrian Purple</string>
    <string id="Color63">Maroon</string>

    <string id="SecondRefreshEverySecond">Every Second</string>
    <string id="SecondRefreshEveryMinute">Every Minute</string>
    <string id="SecondRefreshAlternateMinutes">Alternate Minutes</string>

    <string id="FontXTiny">Extra Tiny</string>
    <string id="FontTiny">Tiny</string>
    <string id="FontSmall">Small</string>
    <string id="FontMedium">Medium</string>
    <string id="FontLarge">Large</string>

    <string id="CustomFontUltraLight">Ultra Light</string>
    <string id="CustomFontExtraLight">Extra Light</string>
    <string id="CustomFontLight">Light</string>
    <string id="CustomFontRegular">Regular</string>
    <string id="CustomFontBold">Bold</string>
    <string id="CustomFontHeavy">Heavy</string>
       
    <string id="SystemCaseAny">Any</string>
    <string id="SystemCaseUpper">Upper Case Names</string>
    <string id="SystemCaseLower">Lower Case Names</string>

    <string id="JustifyCentre">Centre</string>
    <string id="JustifyLeft">Left</string>
    <string id="JustifyRight">Right</string>

   	<string id="ItemOff">Off</string>
    <string id="ItemOn">On</string>
    <string id="ItemOnGlance">Show On Gesture</string>
    
    <string id="ItemSteps">Steps</string>
    <!-- 
    <string id="FieldStepsCount">Steps Count</string>
    <string id="OuterModeSteps">Steps</string>
    -->

    <string id="ItemHours">Hours</string>
    <!-- 
    <string id="FieldHour">Hour</string>
    <string id="OuterModeHours">Hours (and minutes)</string>
    -->

    <string id="ItemMinutes">Minutes</string>
    <!-- 
    <string id="FieldMinute">Minute</string>
    <string id="OuterModeMinutes">Minutes</string>
    -->

    <string id="ItemBatteryPercentage">Battery Percentage</string>
 
    <string id="FieldSeparatorSpace">-Space-</string>
    <string id="FieldSeparatorSlashForward">-Forward Slash-</string>
    <string id="FieldSeparatorSlashBack">-Backslash-</string>
    <string id="FieldSeparatorColon">:</string>
    <string id="FieldSeparatorMinus">-</string>
    <string id="FieldSeparatorDot">.</string>
    <string id="FieldSeparatorComma">,</string>
    <string id="FieldSeparatorPercent">% Symbol</string>

    <string id="FieldDayName">Day Name</string>
    <string id="FieldDayOfWeek">Day Number (of week)</string>
    <string id="FieldDayOfMonth">Day Number (of month)</string>
    <string id="FieldDayOfMonthXX">Day Number (of month XX)</string>
    <string id="FieldDayOfYear">Day Number (of year)</string>
    <string id="FieldDayOfYearXXX">Day Number (of year XXX)</string>
    <string id="FieldMonthName">Month Name</string>
    <string id="FieldMonthOfYear">Month Number</string>
    <string id="FieldMonthOfYearXX">Month Number (XX)</string>
    <string id="FieldYearXX">Year (XX)</string>
    <string id="FieldYearXXXX">Year (XXXX)</string>
    <string id="FieldWeekISOXX">Week Number (ISO XX)</string>
    <string id="FieldWeekISOWXX">Week Number (ISO WXX)</string>
    <string id="FieldYearISOWeekXXXX">Year (ISO week year XXXX)</string>
    <string id="FieldWeekCalendarXX">Week Number (calendar XX)</string>
    <string id="FieldYearCalendarWeekXXXX">Year (calendar week year XXXX)</string>

    <string id="FieldStepsGoal">Steps Goal</string>
    <string id="FieldFloors">Floors</string>
    <string id="FieldFloorsGoal">Floors Goal</string>
    <string id="FieldNotificationsCount">Notifications Count</string>
    <string id="FieldMoveBar">Move Bar</string>

    <string id="OuterModeColor">Plain Color</string>

    <string id="IconCircle">Circle</string>
    <string id="IconCircleSolid">Circle (solid)</string>
    <string id="IconRounded">Rounded</string>
    <string id="IconRoundedSolid">Rounded (solid)</string>
    <string id="IconSquare">Square</string>
    <string id="IconSquareSolid">Square (solid)</string>
    <string id="IconTriangle">Triangle</string>
    <string id="IconTriangleSolid">Triangle (solid)</string>
    <string id="IconDiamond">Diamond</string>
    <string id="IconDiamondSolid">Diamond (solid)</string>
    <string id="IconStar">Star</string>
    <string id="IconStarSolid">Star (solid)</string>

    <string id="IconAlarm">Alarm Icon</string>
    <string id="IconLock">Lock Icon</string>
    <string id="IconNotification">Notification Icon</string>
    <string id="IconPhone">Phone Icon</string>
    <string id="IconNetwork">Network Icon</string>
    <string id="IconBattery">Battery Icon</string>
    <string id="IconBatterySolid">Battery Icon (solid)</string>
    <string id="IconFigure">Figure Icon</string>
    <string id="IconBed">Bed Icon</string>
    <string id="IconFootsteps">Footsteps Icon</string>
    <string id="IconStairs">Stairs Icon</string>
    <string id="IconFlower">Flower Icon</string>

    <string id="SecondTriangle">Triangle</string>
    <string id="SecondV">V</string>
    <string id="SecondLine">Line</string>
    <string id="SecondLineThin">Line (thin)</string>
    <string id="SecondCircular">Circular</string>
    <string id="SecondCircularThin">Circular (thin)</string>
</strings>
properties.xml
<properties>

    <property id="1" type="number">0x000000</property>		<!-- background color -->
    
    <property id="2" type="number">1</property>				<!-- time on -->
    <property id="3" type="boolean">false</property>		<!-- time military -->
    <property id="4" type="number">4</property>				<!-- time hour font -->
    <property id="5" type="number">3</property>				<!-- time hour color -->
    <property id="6" type="number">2</property>				<!-- time minute font -->
    <property id="7" type="number">3</property>				<!-- time minute color -->
    <property id="8" type="boolean">false</property>		<!-- time italic -->
    <property id="9" type="number">0</property>				<!-- time y offset -->

    <property id="10" type="number">1</property>			<!-- second indicator on -->
    <property id="11" type="number">0</property>			<!-- second indicator style -->
    <property id="12" type="number">2</property>			<!-- second refresh style -->
    <property id="13" type="number">1</property>			<!-- second color -->
    <property id="14" type="number">2</property>			<!-- second color 5 -->
    <property id="15" type="number">3</property>			<!-- second color 10 -->
    <property id="16" type="number">10</property>			<!-- second color 15 -->
    <property id="17" type="number">19</property>			<!-- second color 0 -->
    <property id="18" type="boolean">false</property>		<!-- second color demo -->
    <property id="19" type="boolean">false</property>		<!-- second move in a bit -->

    <property id="20" type="number">0</property>			<!-- outer on -->
    <property id="21" type="number">0</property>			<!-- outer mode -->
    <property id="22" type="number">19</property>			<!-- outer color filled -->
    <property id="23" type="number">63</property>			<!-- outer color unfilled -->

    <property id="24" type="number">12</property>			<!-- field font -->
    <property id="25" type="number">3</property>			<!-- field custom weight -->
    <property id="26" type="number">0</property>			<!-- field system case -->
    <property id="27" type="number">24</property>			<!-- field names font for unsupported languages -->
    <property id="28" type="number">-1</property>			<!-- field move bar off color -->
    <property id="29" type="number">1</property>			<!-- field move bar alert trigger level -->
    <property id="30" type="number">75</property>			<!-- field battery high percentage -->
    <property id="31" type="number">25</property>			<!-- field battery low percentage -->

    <property id="FM" type="number">1</property>			<!-- field management -->
    <property id="FN" type="number">1</property>			<!-- field number -->
    <property id="F0" type="number">64</property>			<!-- field y offset -->
    <property id="F1" type="number">0</property>			<!-- field x offset -->
    <property id="F2" type="number">0</property>			<!-- field justification -->
    <property id="F3" type="number">3</property>			<!-- field element 1 -->
    <property id="F4" type="number">0</property>			<!-- visible if -->
    <property id="F5" type="number">3</property>			<!-- color -->
    <property id="F6" type="number">21</property>			<!-- field element 2 -->
    <property id="F7" type="number">0</property>			<!-- visible if -->
    <property id="F8" type="number">3</property>			<!-- color -->
    <property id="F9" type="number">5</property>			<!-- field element 3 -->
    <property id="F10" type="number">0</property>			<!-- visible if -->
    <property id="F11" type="number">3</property>			<!-- color -->
    <property id="F12" type="number">0</property>			<!-- field element 4 -->
    <property id="F13" type="number">0</property>			<!-- visible if -->
    <property id="F14" type="number">3</property>			<!-- color -->
    <property id="F15" type="number">0</property>			<!-- field element 5 -->
    <property id="F16" type="number">0</property>			<!-- visible if -->
    <property id="F17" type="number">3</property>			<!-- color -->
    <property id="F18" type="number">0</property>			<!-- field element 6 -->
    <property id="F19" type="number">0</property>			<!-- visible if -->
    <property id="F20" type="number">3</property>			<!-- color -->

    <property id="32" type="boolean">false</property>		<!-- demo font styles -->
    <property id="33" type="boolean">false</property>		<!-- demo second styles -->
    <property id="34" type="boolean">false</property>		<!-- demo display -->

    <property id="35" type="number">0</property>			<!-- glance profile -->
    <property id="0" type="string"></property>				<!-- profile name -->

    <property id="PM" type="number">0</property>			<!-- profile management -->
    <property id="PN" type="number">1</property>			<!-- profile number -->
    <property id="PD" type="number">0</property>			<!-- profile activation days -->
    <property id="PS" type="string">HH:MM</property>		<!-- profile start time -->
    <property id="PE" type="string">HH:MM</property>		<!-- profile end time -->
    <property id="PB" type="boolean">false</property>		<!-- profile block random -->
    <property id="PR" type="number">0</property>			<!-- profile random events -->

    <property id="DP" type="boolean">false</property>		<!-- demo profiles -->
    <property id="DR" type="string">25 99</property>		<!-- demo profiles range -->

    <property id="EP" type="string"></property>				<!-- export import profile -->
    <property id="EF" type="string"></property>				<!-- export import fields 1-3 -->
    <property id="EG" type="string"></property>				<!-- export import fields 4-6 -->

</properties>
settings.xml

If I had a D2 Charlie or Fenix 5X watch and an iPhone I could try various things to narrow down what is causing the problem, but unfortunately I don't Slight smile It should be possible to create a new blank watchface with the above strings, properties and settings files to see if they still go wrong then, but I wouldn't be able to test it.

So things I don't know because I can't test them:

  • Is it only one property which is not working?
  • Is it only one type of property which isn't working (e.g. strings)?
  • Is it because they are initialised with a certain value?
  • Is it all properties?
  • Are those properties that crash working ok before receiving new settings? Currently, they are only first accessed after receiving new settings, but it seems likely they would work ok before, since they work when receiving new settings via the GCIQS app.

If I can provide more information or help in any way, let me know!

  • That's useful to know Werner, thanks. I have heard of the iOS apps sometimes sending settings as strings - in fact I check all my received settings are of the type I expect, and if they aren't I convert them to the correct type. But I never expected to have settings disappear, which is what seems to happen for me! And the fact I can't then set a value for a setting because it doesn't exist causes a problem, because I'm trying to send that value back to the user ...

  • To my experience CGM iOS and GC IQ act differently when sending settings data to the mobile device (in my case Edge 1030). When sending settings for my app SPHGraWH from CGM iOS the values are stored in the settings file as i definded them. Strings are strings and numbers are numbers. But when sending the settings from the new CC IQ iOS app some values that i defined a numbers in my properties are stored as strings in the settings file. The difference is easy to see for me when looking at the settings files with a hex editor.

    Actually my app crashes because of the unexpected strings. I am actualy changing my app to properly handle and convert every input (number or string) so that the app will not crash in the future. Perhaps this may help to locate your problem.

    BR Werner

  • Ok here is a zip of a project for Eclipse (I'm using Eclipse IDE for Java Developers, Version: 2018-09 (4.9.0), Build id: 20180917-1800 on Windows 10) for CIQ SDK 3.0.11:

    test1.zip

    I've uploaded it to the app store here: apps.garmin.com/.../cda199b4-9b63-47fa-9b3b-b7f1ddb02368 ("M1DebugTest do not download!"), version 1.0.3. It just displays "OK" when it's installed.

    No idea what happens on a D2 Charlie or Fenix 5X when you change the settings via GCM iOS though … (But on my Fenix 5X Plus it continues to run.) I'm interested to know if someone tries it Slight smile

    I had another thought if someone could check the settings in GCM iOS for D2 Charlie or Fenix 5X - do the last few settings actually get displayed there? They are called "Export/Import Profile Text (use profile management above)" and "Export/Import Fields Text (use profile management above)" and should appear as just blank strings by default.

  • If it's useful I'll try creating a totally minimal watch face app now, and upload a zip of the complete project here before the forums go down for the week.