Sideload (devel) apps/widgets/... along Store-installed (release) version ?

Hello,
Even as a developer, there comes a time when you install you app/widget/... via the Garmin Store, if not only for your peace of mind (verify it works all the way down to the end-user) but also to verify features like FIT-contributed fields/charts (that are enabled only for duly Store-installed app).
However, as a developer, you go on improving your app and may wish to sideload test/development versions on the actual device, where its Store-installed sibling already exists (albeit with an hex-encoded *.prg - different from the uploaded app/widget/... name - and a checksum that does not match what the *.prg uploaded *.iq zipped package).
Is there a best-recommended way to deal with this situation without messing (potentially dangerously?) with your device ?
Or is it something one should avoid ?
Thanks and best,
Cédric
  • This is something to avoid, as the names doesn't matter, it uses the UUID from the manifest, and you'll get a collision. When I want to test a sideload, I first uninstall the store version, and when I want to install the store version, uninstall the sideload.

    You could change the UUID for the sideload and the store and sideload can co-exist, but then you want to make sure that the UUID is set back to the correct one when you update the store.
  • I keep a comment in the top few lines of the main app source file which contained the apps UUID. Once I have tested enough to load as a beta into the app store I increment by 1. When I'm ready to publish I increment again, so I end up with 3 sequential UUIDs which therefore do not clash. The only problem is that unless you have some uniquely identifiable change, it can be hard to identify which is which if more than one is loaded on the watch.

    I only recently started doing this. Next time I will make sure the first UUID ends in a 1 so I will always know 1 is for sideload, 2 is for beta and 3 is for the published version, but I had already posted the beta version when I realised this would be a better idea!

    Here is a redacted example from the header of an app I am waiting to publish once 2.4.0 is out of beta:
    //
    // Garmin Connect IQ parkrun widget main app module
    //
    // $Id: parkrunApp.mc 7 2017-11-02 13:55:25Z jbigg $
    //
    // App Id xxxxxxxxxxxxxxxxxxxxxxxxxEAB107B is for sideload
    // xxxxxxxxxxxxxxxxxxxxxxxxxEAB107C is beta version uploaded


    I will add another entry ending 107D for the final publish.

    Of course you have to remember to edit the manifest file to set the correct id! I am not sure what the watch would do if you load an app with a duplicate id as I have never tried this.
  • Thanks to all for your feedbacks.

    Nice to know *UUID is the key*.

    I will then personally tackle this with a separate Git branch, with a development-dedicated manifest,xml.
  • Hi,

    how to you handle the dedicated manifest.xml in git ?

  • When I make a sideload I just generate a random UUID each time, and then restore it afterwards to the release UUID.