Ticket Created
over 3 years ago

WERETECH-12051

[Docs Issue] Application Type "audio-content-provider" does not exist

I'm trying to make an Audio Content Provider. According to the Manifest File docs, my manfiest.xml needs to declare that the app is an Audio Content Provider by setting the Application Type attribute as "audio-content-provider". Something like:

<iq:manifest version="1">
    <iq:application entry="CommExample" id="a3421feed289106a538cb9547ab12095"
        name="SomeMusic" launcherIcon="LauncherIcon" type="audio-content-provider" minApiLevel="1.3.1">

        <iq:products>
            <iq:product id="vivoactive"/>
        </iq:products>

        <iq:permissions>
            <iq:uses-permission id="Communications"/>
        </iq:permissions>

    </iq:application>
</iq:manifest>

However, when I try to compile my app, it fails, reporting that "audio-content-provider" is not a recognised application type:

❯ monkeyc -d vivoactive -f monkey.jungle -o bin/somemusic.prg -y ../dev_key.der
ERROR: com.garmin.connectiq.common.manifest.ManifestException: Unknown app type: audio-content-provider
com.garmin.connectiq.common.manifest.ManifestException: [102] com.garmin.connectiq.common.manifest.ManifestException: Unknown app type: audio-content-provider
        at com.garmin.monkeybrains.Monkeybrains.runPRGCompiler(Monkeybrains.java:1290)
        at com.garmin.monkeybrains.Monkeybrains.compileApplication(Monkeybrains.java:1175)
        at com.garmin.monkeybrains.Monkeybrains.run(Monkeybrains.java:2477)
        at com.garmin.monkeybrains.Monkeybrains.simpleMain(Monkeybrains.java:252)
        at com.garmin.monkeybrains.Monkeybrains.main(Monkeybrains.java:281)

I then came across the example Audio Content Provider app supplied by Garmin on their GitHub repo. This app does not use "audio-content-provider" in its manifest.xml; it uses "audio-content-provider-app". When I updated my manifest.xml to use "audio-content-provider-app" as the Application type, my app compiled successfully, and shows as a Music Provider on my watch.

The docs should be updated with the correct application type, "audio-content-provider-app".

  • What would you recommend for people who are not using Eclipse or VSCode then? Many people have old hardware that is not capable of running simulator and a bulky editor/IDE simultaneously, so a viable CLI ecosystem ensures people with such devices are not excluded 

  • There are things that can get tricky when you hand edit, like barrels for example.  That's why there is this comment in the manifest.xml

    "<!-- This is a generated file. It is highly recommended that you DO NOT edit this file. -->"

  • That's fair enough for Eclipse/VS Code users, but it should still be hand-editable if not using those programs. In that case, the user depends on the docs to know what the "type" is, and the docs have it wrong. So either way, they should be updated.

    Thanks for the shout on the vivoactive, I was actually building for forerunner 645m, the vivoactive was just the example in the docs.

  • Generally, you want to use the manifest editor to change manifest.xml, so you see this (eclipse) and just select the proper thing.

    Also, the vivoactive doesn't support this app type.  the va3music and va4 do. (as well as some forerunner, Fenix, and Venu devices)