Complications.updateComplication() crashes

I'm seeing crash reports where calls to Complications.updateComplication either causes and exception or crashes with "Symbol Not Found Error".

My app calls this only for devices that support complications and it works on my devices and the sim.

I can't figure out why this is happening quite a bit in the wild. 

I assume that the CIQ store wouldn't allow the app to be installed on a devices that don't have the API level that supports complications.  Is that a correct assumption?

  • <iq:product complications="006-B3944-00/006-B3944-00-complications.json" connectIqVersion="4.2.3" filename="006-B3944-00/TidesWavesWindPro.prg" id="epix2" minFirmwareVersion="1431"

  • Note that I'm posting info from the IQ file I published in October when the SDK version was 4.2.3

  • Here's what I see for the epix2 in the iq file's manifest.xml for a watchface that subscribes to complications

    CIQ is 4.2.4 and FW, 1517

    By using something from 4 months back, you're allowing the app to be installed on older firmware, where it may not work.

    Build a new iq file with the latest device files and SDK, and upload it to the store

                <iq:product connectIqVersion="4.2.4" filename="006-B3944-00/SimLeanG2.prg" id="epix2" minFirmwareVersion="1571" partNumber="006-B3944-00" sig="0A29D836CDCD60A1727D8D1F81B374260E67BC2C3FA663D9D97A3E1267D840D04F12BC8650A8C1958A77BD24FE51583712E18A365D40AA9162E16C7397A36A6E5DBF4CA117FB035971091A185F99658D5243401516B3BA0BD21D7882B4CDA2597035CAB044D0EEB3BC6053246638D4C1165A1B4BD0875DABD791B6623AFD1306DF05777C38A6F6C0CF66E046FFB9D52A16D130EC88BCE3FDA12A769A9BE7139A376EF76E0BEA44748CEAB04B0EE6E580F4421FAC61B17E2E5BFF7590F5419BC9B019B5CE56834F29EEE76107609145D4D66355DCF58B2DA965FE331D2298CE60DDFF5F63A749F75F1408826AD81598F5B8C4CB72BD3373FD173F34E2064579920038E6D633789FD148CEA1D6B38C8C834C98FF2B46DBA3E0FA14E640997DD961D6227177637CDF4DC0465E6B6FDF8BC0258AC1D954E0EFC6F143FA8621649A1A8B766A9F016BA2891788DDD2CA7CB7CB7721AFA5CC10430B80C95C552A9B8F5C706BCB6F6EFF2305CD76E4F1F1BDF8F49858F5E2250EBD8B84B8243FBB91E33F82EDA87322D4C240A48CC769B67CD531AF4E6722629FA77CCF2F9CF28673DEA8E7E4D6593FCEA77784668948EE3EAF3780909C6277693B7EF40DE404AE71CBD82EE656C0856BFA2D162A495758771045B6E276AB1FF1498979FB3D25C561424716852C3C981008D717C43413254BE27C615FF3B86C6D46FEBC76AD916DEB8CCA" sigFormat="rsa-4096"/>
                            
                <iq:product connectIqVersion="4.2.4" filename="006-B3943-00/SimLeanG2.prg" id="epix2" minFirmwareVersion="1571" partNumber="006-B3943-00" sig="0A29D836CDCD60A1727D8D1F81B374260E67BC2C3FA663D9D97A3E1267D840D04F12BC8650A8C1958A77BD24FE51583712E18A365D40AA9162E16C7397A36A6E5DBF4CA117FB035971091A185F99658D5243401516B3BA0BD21D7882B4CDA2597035CAB044D0EEB3BC6053246638D4C1165A1B4BD0875DABD791B6623AFD1306DF05777C38A6F6C0CF66E046FFB9D52A16D130EC88BCE3FDA12A769A9BE7139A376EF76E0BEA44748CEAB04B0EE6E580F4421FAC61B17E2E5BFF7590F5419BC9B019B5CE56834F29EEE76107609145D4D66355DCF58B2DA965FE331D2298CE60DDFF5F63A749F75F1408826AD81598F5B8C4CB72BD3373FD173F34E2064579920038E6D633789FD148CEA1D6B38C8C834C98FF2B46DBA3E0FA14E640997DD961D6227177637CDF4DC0465E6B6FDF8BC0258AC1D954E0EFC6F143FA8621649A1A8B766A9F016BA2891788DDD2CA7CB7CB7721AFA5CC10430B80C95C552A9B8F5C706BCB6F6EFF2305CD76E4F1F1BDF8F49858F5E2250EBD8B84B8243FBB91E33F82EDA87322D4C240A48CC769B67CD531AF4E6722629FA77CCF2F9CF28673DEA8E7E4D6593FCEA77784668948EE3EAF3780909C6277693B7EF40DE404AE71CBD82EE656C0856BFA2D162A495758771045B6E276AB1FF1498979FB3D25C561424716852C3C981008D717C43413254BE27C615FF3B86C6D46FEBC76AD916DEB8CCA" sigFormat="rsa-4096"/>
                   

    If you edited any of the compiler.json files for devices, that can mess up getting updates for that device.  What do you see for the epix2 in the device folder/compiler.json?

  • As I mentioned, the issue is with an app that was submitted in October using 4.2.3.  So yes, I see the same as you when build the app today on 4.2.4.  I don't think looking at current 4.2.4 devices files is going to help.  Yes?

  • Given that we see "id="epix2" minFirmwareVersion="1431"" in the app I submitted, why am I seeing these crashes on:

    epixTm (Gen 2) / quatix® 7 Sapphire: 8.45
    epixTm (Gen 2) / quatix® 7 Sapphire: 7.48,

  • It's because the compiler.json file you used is old.  Make sure the one you have shows 1571 and not 1431, then build a new iq file and submit it to the store

  • It's because the compiler.json file you used is old.

    I don't understand this statement.  The file I submitted specifies min FW of 1431 yet it got installed on devices with much older FW.

  • For the epix2, it's compiler.json should have 1571 and NOT 1431, and if you have 1431 in the iq file's manifest.xml, you want to build a new one with the current devices.

    Of cource, if your app had the "has" checkes that were suggested, it wouldn't crash on the older FW, but no complications..

  • That doesn't answer my question...

  • It should have only been installed on devices with 14.31 or newer.  Maybe I missed where you said it was installed pre-14.31

    It does look like the APAC versions may have pre 14.31 in the compiler.json file.  APAC can have older FW.

    Again, just build a new iq with the latest device files and update the store.