SDK/API check (crash report on certain watch)?

So I made this history widget: https://apps.garmin.com/nl-NL/apps/ae8b1b60-3a67-4b61-a8d7-b735a5b8d686

And got a review saying it doesn't work on epix, requested more info which I didn't get so far... Anyway, something I noticed is that the epix is the only watch running connectiq 1.2.0, the others are 1.3 and up so I was wondering if there is some API call or type which is not supported by epix.

I manually looked through all the code, comparing calls, objects and fonts with the API docs and checking if they are supported by 1.2 and at a first glance I can't see anything wrong but this is a pretty tedious progress. Is there a way to make this easier?

One trick I did was do a google search on ' site:developer.garmin.com 1.3 ' to check for api supported by 1.3 and up ' but I was hoping there are other ways...

Things I checked for was using SYSTEM fonts (supported from 1.3 and up) for example, activity minutes are only used when checking the proper sdk version so that shouldn't be the issue. (I assume you can have it in the code and it will only give problems when actually called).

Any ideas on what I could try, apart from heading over to the epix forum and ask for volunteers to debug?
  • I fail to understand people that give 1 star reviews with as only content that it does not work on their watch... :rolleyes:
  • I fail to understand people that give 1 star reviews with as only content that it does not work on their watch... :rolleyes:


    Yeah, kind of a shame... Mainly annoying that there's not much I can do without additional info :/

    Otherwise I'll just have to remove epix support for now
  • Can you contact the user? If so, maybe you can email a debug build they can sideload so you'll get more info in ciq_log.txt. If it's in a review, reply and ask they use "contact developer" so you can send a sideload.

    I seem to remember there's a number of kind of small things that differ on the Epix - like some of the Math calls, etc, so you may want to look for stuff like that in the api guide (go call by call and look in the API guide) or do what I do - just don't support the epix. If a user asks for Epix support, that will be someone that will probably work with you, that you can send sideloads to, etc.
  • Can you contact the user? If so, maybe you can email a debug build they can sideload so you'll get more info in ciq_log.txt. If it's in a review, reply and ask they use "contact developer" so you can send a sideload.

    I seem to remember there's a number of kind of small things that differ on the Epix - like some of the Math calls, etc, so you may want to look for stuff like that in the api guide (go call by call and look in the API guide) or do what I do - just don't support the epix. If a user asks for Epix support, that will be someone that will probably work with you, that you can send sideloads to, etc.


    I can give it a try in the forums (but he has only 2 replies there from 2016), but no info so far... Asked to supply details in response on the feedback, but haven't heard anything yet.

    Already went through all the api calls but couldn't find anything unfortunately.

    So yeah, perhaps just dropping the epix is the easiest (and best) way for now. With the different screen-shape and all it's an exception anyway and it's the only 1.2.0 device.
  • I replied to the review asking for more info, but haven't had a response yet... Do see he has a forum account but only posted something twice (and that was in 2016) so meh...

    Guess I'll just remove epix support for now indeed, being the only 1.2 device and also with the different screen shape/size might not be too crazy an idea ;)
  • I manually looked through all the code, comparing calls, objects and fonts with the API docs and checking if they are supported by 1.2 and at a first glance I can't see anything wrong but this is a pretty tedious progress. Is there a way to make this easier?

    You can use the command line and search the file bin/api.debug.xml to get a list of the ones that are disallowed by the simulator. The documentation can be searched as well, and seems to be more accurate. If there are differences, a bug should be filed.

    Q:\eclipse_production\connectiq-sdk-win-2.2.5\bin>findstr /s /c:"annotationEntry" api.debug.xml | findstr /c:"1.3.0"
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="AppBase" module="Toybox_Application" symbol="getGoalView"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Communications" module="Toybox" symbol="makeWebRequest"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Communications" module="Toybox" symbol="generateSignedOAuthHeader"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Communications" module="Toybox" symbol="makeOAuthRequest"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="OAuthMessage" module="Toybox_Communications" symbol="initialize"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Communications" module="Toybox" symbol="registerForOAuthMessages"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Communications" module="Toybox" symbol="openWebPage"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Session" module="Toybox_ActivityRecording" symbol="createField"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Field" module="Toybox_FitContributor" symbol="setData"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Number" module="Toybox_Lang" symbol="toChar"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Long" module="Toybox_Lang" symbol="equals"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Double" module="Toybox_Lang" symbol="equals"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="String" module="Toybox_Lang" symbol="toCharArray"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="String" module="Toybox_Lang" symbol="toUtf8Array"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Char" module="Toybox_Lang" symbol="toNumber"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Char" module="Toybox_Lang" symbol="toString"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Char" module="Toybox_Lang" symbol="toLower"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Char" module="Toybox_Lang" symbol="toUpper"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Array" module="Toybox_Lang" symbol="add"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Array" module="Toybox_Lang" symbol="addAll"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Array" module="Toybox_Lang" symbol="indexOf"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Array" module="Toybox_Lang" symbol="remove"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Array" module="Toybox_Lang" symbol="removeAll"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Array" module="Toybox_Lang" symbol="reverse"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Array" module="Toybox_Lang" symbol="slice"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Math" module="Toybox" symbol="atan2"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Math" module="Toybox" symbol="ceil"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Math" module="Toybox" symbol="floor"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Math" module="Toybox" symbol="round"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Math" module="Toybox" symbol="toDegrees"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Math" module="Toybox" symbol="toRadians"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="StringUtil" module="Toybox" symbol="charArrayToString"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="StringUtil" module="Toybox" symbol="utf8ArrayToString"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="StringUtil" module="Toybox" symbol="encodeBase64"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="DataField" module="Toybox_WatchUi" symbol="onTimerStart"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="DataField" module="Toybox_WatchUi" symbol="onTimerStop"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="DataField" module="Toybox_WatchUi" symbol="onTimerPause"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="DataField" module="Toybox_WatchUi" symbol="onTimerResume"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="DataField" module="Toybox_WatchUi" symbol="onTimerLap"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="DataField" module="Toybox_WatchUi" symbol="onTimerReset"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="DataField" module="Toybox_WatchUi" symbol="createField"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Text" module="Toybox_WatchUi" symbol="setBackgroundColor"/>

    Q:\eclipse_production\connectiq-sdk-win-2.2.5\bin>


    Things I checked for was using SYSTEM fonts (supported from 1.3 and up)

    Yes, according to the documentation (but not api.debug.xml) the FONT_SYSTEM_... fonts are only available on devices that support the ConnectIQ API version 1.3.0 and later. If these fonts are used on an Epix, I would expect an application crash. It seems that there is a simulator bug here in that the fonts are not annotated.

    activity minutes are only used when checking the proper sdk version so that shouldn't be the issue. (I assume you can have it in the code and it will only give problems when actually called).

    Yes, this should be the case assuming that the functionality you speak of is properly referenced in api.debug.xml.

    Travis
  • i have epix here so could try it out, but it looks like epix is removed from support now. If you want to send me something i can sideload i'll give it a go and see what clues appear in the log(s).
    I have seen several times things work in the epix simulator but then fail in the device.
  • You can use the command line and search the file bin/api.debug.xml to get a list of the ones that are disallowed by the simulator. The documentation can be searched as well, and seems to be more accurate. If there are differences, a bug should be filed.

    Q:\eclipse_production\connectiq-sdk-win-2.2.5\bin>findstr /s /c:"annotationEntry" api.debug.xml | findstr /c:"1.3.0"
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="AppBase" module="Toybox_Application" symbol="getGoalView"/>
    <sniP>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="DataField" module="Toybox_WatchUi" symbol="createField"/>
    api.debug.xml:<annotationEntry annotation="minSdk(&quot;1.3.0&quot;)" class="Text" module="Toybox_WatchUi" symbol="setBackgroundColor"/>

    Q:\eclipse_production\connectiq-sdk-win-2.2.5\bin>



    Yes, according to the documentation (but not api.debug.xml) the FONT_SYSTEM_... fonts are only available on devices that support the ConnectIQ API version 1.3.0 and later. If these fonts are used on an Epix, I would expect an application crash. It seems that there is a simulator bug here in that the fonts are not annotated.


    Yes, this should be the case assuming that the functionality you speak of is properly referenced in api.debug.xml.

    Travis


    Btw, could have sworn I replied to this already but guess not?

    Thanks! The debug.api.xml is a nice trick to get a good idea of the relevant methods... I still haven't found anything though but is surely of use in the future!



    i have epix here so could try it out, but it looks like epix is removed from support now. If you want to send me something i can sideload i'll give it a go and see what clues appear in the log(s).
    I have seen several times things work in the epix simulator but then fail in the device.


    OH thanks! That would be great... :)

    I will add some debug lines (System.println) to properly be able to track some more and will send you the prg soon then... (Think I can find some time tomorrow)

    Indeed it was removed, mainly because I have no way of properly testing and I didn't get any response from the original person complainig but if you are willing to give it a try that would help a lot.