Signature Check failed after upgrading to SDK 7.x.x

I have a datafield that builds and sideloads successfully onto my Fenix 5S Plus with SDKs <= 6.4.2.

When I upgrade to any SDK 7.x.x version, the build is successful BUT sideload fails due to Signature check. I didn't change the developer key and I've also uninstalled older versions of the datafield from the IQ store.

I've seen a couple of comments that mentions this issue, but there's no discussion on it. Any help on this would be appreciated!

---
Error: 'Signature check failed on file: mydatafield'
Time: 2024-09-04T20:26:43Z
Part-Number: 006-B2900-00
Firmware-Version: '19.30'
Language-Code: eng
---

Top Replies

All Replies

  • We build the datafield for multiple watches (new and some old), so for testing, I typically don't specify the device.

    Oh I was gonna say that with a recent firmware change, it doesn't seem possible to sideload a PRG built for a different kind of device on to a newer device anymore. I didn't mention it bc I assumed you were always targeting your build to the actual device type.

    I didn't think there was a SDK version dependency though. I've recently tried sideloading a few old watchfaces built for older devices to my FR955 - these watchfaces were successfully sideloaded in the past, but not anymore.

    I also noticed that on newer devices, *all* PRGs are "hidden" (unavailable) from the file system now. (Previously it was only PRGs for a subset of app types that were hidden.)

    In short, it seems security / validation around PRGs has been beefed up. (I'm guessing part of this is related to monetization.)

    EDIT: but what I said above most likely doesn’t apply to a device as old as Fenix 5S Plus (especially given the SDK dependency.) Kyle.ConnectIQ’s comment below is the answer

  • When you export an app for the store it builds a PRG targeting each device listed in the manifest file, so this won't be a problem. In the 7.0 SDK we optimized a few things to reduce the PRG size, but it also required a firmware update on devices to take advantage of them. The compiler should be generating the correct PRG based on the target device. If building without a target device then it'll include the optimizations, which will cause the error you were seeing on older devices.

    When side loading an app you should always load a PRG that was built for that specific device. There are a few other things that can be different in the PRG that could cause problems running on different devices.