The products and setting resources declared in the manifest file must match the app file directory structure

Hi all,

I recently switch to VSC (I know I should have done that a while ago!)...

I just export the app, no error, I get the .iq file, but when I try to upload, it is rejected with the following message :

The products and setting resources declared in the manifest file must match the app file directory structure. {0}

Does anyone have any ideas of what I'm doing wrong ?
Note : Sorry for my english, not my native langage

  • Which SDK are you using? 8.1.1 is the current production version.

    I can imagine that using a really old one could generate an iq file that's no longer compatible.

  • I switch to VSC on my previous release (with SDK7.3.0), and I now try with SDK 8.1.1.

    I just tried to export for only one product ID => No problem
    I just tried to export for only the new product I just add in this release => No problem

    I think I just found the problem, even if the export tools said at the end "OK". It seems that two device type (newly??) not support the minimum API level I set (3.1.0). So the package tool ignore the device that is however mentionned in the manifest.
    I make some test and will confirm that.

  • Do you have something like a preview device in your manifest file as a target device?

  • I confirm.

    This seems to be a "bug".

    Device name: 'D2 Delta PX' Part number: '006-B3324-00' CIQ ver: '3.0.3' is being ignored by the package tool because it does not support the minimum API Level set for this project
    Device name: 'vívoactive 3' Part number: '006-B3446-00' CIQ ver: '3.0.3' is being ignored by the package tool because it does not support the minimum API Level set for this project
    Device '006-B3704-00' is being ignored by the package tool. It is not supported for export.
    Device '006-B3949-00' is being ignored by the package tool. It is not supported for export

    But D2 Delta PX and vivoctive 3 API level is normaly 3.1.0 as it is mentionned on the documentation.

    And I correctly set "Minimum Supported API Level" to 3.1.0 in the manifest, so why it is still possible to select them. I will try to downgrade SDK to build.

  • The last two lines look to be you have devices that are preview devices in your manifest.xml

    Post what devices you have there.

  • <?xml version="1.0"?>
    <!-- This is a generated file. It is highly recommended that you DO NOT edit this file. -->
    <iq:manifest xmlns:iq="http://www.garmin.com/xml/connectiq" version="3">
        <iq:application entry="APICallApp" id="xxxxxxxx" launcherIcon="@Drawables.LauncherIcon" minSdkVersion="3.1.0" name="@Strings.AppName" type="widget" version="1.7.0.0">
            <iq:products>
                <iq:product id="approachs50"/>
                <iq:product id="approachs7042mm"/>
                <iq:product id="approachs7047mm"/>
                <iq:product id="d2air"/>
                <iq:product id="d2airx10"/>
                <iq:product id="d2delta"/>
                <iq:product id="d2deltapx"/>
                <iq:product id="d2deltas"/>
                <iq:product id="d2mach1"/>
                <iq:product id="descentg2"/>
                <iq:product id="descentmk1"/>
                <iq:product id="descentmk2"/>
                <iq:product id="descentmk2s"/>
                <iq:product id="descentmk343mm"/>
                <iq:product id="descentmk351mm"/>
                <iq:product id="edge1030"/>
                <iq:product id="edge1030bontrager"/>
                <iq:product id="edge1030plus"/>
                <iq:product id="edge1040"/>
                <iq:product id="edge1050"/>
                <iq:product id="edge520plus"/>
                <iq:product id="edge530"/>
                <iq:product id="edge540"/>
                <iq:product id="edge830"/>
                <iq:product id="edge840"/>
                <iq:product id="edgeexplore"/>
                <iq:product id="edgeexplore2"/>
                <iq:product id="enduro"/>
                <iq:product id="enduro3"/>
                <iq:product id="epix2"/>
                <iq:product id="epix2pro42mm"/>
                <iq:product id="epix2pro47mm"/>
                <iq:product id="epix2pro51mm"/>
                <iq:product id="fenix5"/>
                <iq:product id="fenix5plus"/>
                <iq:product id="fenix5s"/>
                <iq:product id="fenix5splus"/>
                <iq:product id="fenix5x"/>
                <iq:product id="fenix5xplus"/>
                <iq:product id="fenix6"/>
                <iq:product id="fenix6pro"/>
                <iq:product id="fenix6s"/>
                <iq:product id="fenix6spro"/>
                <iq:product id="fenix6xpro"/>
                <iq:product id="fenix7"/>
                <iq:product id="fenix7pro"/>
                <iq:product id="fenix7pronowifi"/>
                <iq:product id="fenix7s"/>
                <iq:product id="fenix7spro"/>
                <iq:product id="fenix7x"/>
                <iq:product id="fenix7xpro"/>
                <iq:product id="fenix7xpronowifi"/>
                <iq:product id="fenix843mm"/>
                <iq:product id="fenix847mm"/>
                <iq:product id="fenix8solar47mm"/>
                <iq:product id="fenix8solar51mm"/>
                <iq:product id="fenixchronos"/>
                <iq:product id="fenixe"/>
                <iq:product id="fr165"/>
                <iq:product id="fr165m"/>
                <iq:product id="fr245"/>
                <iq:product id="fr245m"/>
                <iq:product id="fr255"/>
                <iq:product id="fr255m"/>
                <iq:product id="fr255s"/>
                <iq:product id="fr255sm"/>
                <iq:product id="fr265"/>
                <iq:product id="fr265s"/>
                <iq:product id="fr55"/>
                <iq:product id="fr645"/>
                <iq:product id="fr645m"/>
                <iq:product id="fr745"/>
                <iq:product id="fr935"/>
                <iq:product id="fr945"/>
                <iq:product id="fr945lte"/>
                <iq:product id="fr955"/>
                <iq:product id="fr965"/>
                <iq:product id="instinct3amoled45mm"/>
                <iq:product id="instinct3amoled50mm"/>
                <iq:product id="legacyherocaptainmarvel"/>
                <iq:product id="legacyherofirstavenger"/>
                <iq:product id="legacysagadarthvader"/>
                <iq:product id="legacysagarey"/>
                <iq:product id="marq2"/>
                <iq:product id="marq2aviator"/>
                <iq:product id="marqadventurer"/>
                <iq:product id="marqathlete"/>
                <iq:product id="marqaviator"/>
                <iq:product id="marqcaptain"/>
                <iq:product id="marqcommander"/>
                <iq:product id="marqdriver"/>
                <iq:product id="marqexpedition"/>
                <iq:product id="marqgolfer"/>
                <iq:product id="venu"/>
                <iq:product id="venu2"/>
                <iq:product id="venu2plus"/>
                <iq:product id="venu2s"/>
                <iq:product id="venu3"/>
                <iq:product id="venu3s"/>
                <iq:product id="venud"/>
                <iq:product id="venusq"/>
                <iq:product id="venusq2"/>
                <iq:product id="venusq2m"/>
                <iq:product id="venusqm"/>
                <iq:product id="vivoactive3"/>
                <iq:product id="vivoactive3m"/>
                <iq:product id="vivoactive3mlte"/>
                <iq:product id="vivoactive4"/>
                <iq:product id="vivoactive4s"/>
                <iq:product id="vivoactive5"/>
                <iq:product id="vivoactive6"/>
            </iq:products>
            <iq:permissions>
                <iq:uses-permission id="Communications"/>
            </iq:permissions>
            <iq:languages>
                <iq:language>eng</iq:language>
                <iq:language>fre</iq:language>
            </iq:languages>
            <iq:barrels/>
        </iq:application>
    </iq:manifest>

  • Not better with a downgrade to the previous SDK version... Probably the update of devices in the SDK manager ...

  • What you described above for D2 Delta PX and Vivoactive 3 is not a bug, it's normal.

    - Older garmin devices typically have multiple part numbers: 1 for WW [worldwide] and 1 for APAC [asia-pacific]. Each part number has different software, with different support for languages

    - What you are seeing is that is that vivoactive 3 and d2 delta px have 2 or more part numbers each:

    e.g. vivoactive3

    006-B2700-00 - WW: CIQ 3.1.6

    006-B2976-00 - APAC: CIQ 3.1.9

    006-B3446-00 - APAC: CIQ 3.0.3

    d2deltapx:

    006-B3198-00 - WW: CIQ 3.1.8

    006-B3324-00 - WW: CIQ 3.0.3

    You can see this if you open the following files:

    .../Garmin/ConnectIQ/Devices/vivoactive3/compiler.json

    .../Garmin/ConnectIQ/Devices/d2deltapx/compiler.json

    [Garmin/ConnectIQ is the folder under which all the SDKs and devices are installed]

    - Since you set a min api level of 3.1.0, all the part numbers lower than 3.1.0 are excluded. This means anyone who bought an APAC version of those two devices would not be able to install your app.

    Device '006-B3704-00' is being ignored by the package tool. It is not supported for export.
    Device '006-B3949-00' is being ignored by the package tool. It is not supported for export

    Like jim_m_58 said, these lines appear to indicate you have a preview device selected.

    The bug here might be that if you have a preview device selected, the export process succeeds with warnings, but it produces a bad IQ file. [In the past, the export would fail.]

    Those part numbers are used by venu2 which should correspond to the wearable2021 preview device.

    If you have wearable2021 or smallwearable2021 selected as products in manifest.xml, delete them - they're preview devices, and not suitable for export

  • OK. Sorry if I don't undestand but what is a "preview device", it's a device that I add as a product in my manifest as "iq:product id=xxxx" ?

    If yes, and if I understand well. Because I don't just added these devices, there are here from the begining of the dev of my app in 2020... Why it makes problem now ? It never make problems before (no export failed and no warnings ...)

     - Either it means that the compiler.json of these devices has changed, adding 3.0.1 part ? 
     - Either it means that the way to compile has changed.

    So, thanks for your explanations, so OK the warning is normal, but why it build an iq file that is finally refused by garminIQ ?

    And anyway, what is the good way for me ?
     - Edit the compiler.json and remove the part with connect IQ version 3.0.3 ? It seems to be dangerous, because it could affect some other project...

  • Since you don't have any preview devices in your manifest, the following lines are extra suspicious:

    Device '006-B3704-00' is being ignored by the package tool. It is not supported for export.
    Device '006-B3949-00' is being ignored by the package tool. It is not supported for export

    Like I said, those are part numbers for venu2, which is a perfect valid device.

    Could you try deleting and reinstalling the Venu 2 device in the SDK manager?