Acknowledged

bug: venusqm CIQ version isn't updated

On a physical venusqm the API level is 3.3.6, but in compiler.json it's only 3.3.1 and here: https://developer.garmin.com/connect-iq/compatible-devices/ it's only 3.3.0

Parents
  • And if the intention is what Kyle writes, the version of each called system function (taking HAS into account) should be checked during compilation and only its use should limit devices when downloading applications from the store.

    This is an interesting idea, but I'm not sure it's feasible, because there are many ways for a dev to conditionally call system functions, other than using a has check for the function in question, and it's not always going to be clear to the compiler whether the condition is true or false for a given device.

    e.g. Consider an app that contains the following code:

    Assuming this is the only code in the app which depends on CIQ 3.4 (or higher), I would like the app to be available to older devices with CIQ 2, as well as newer devices. But according to your proposal, the compiler will probably decide that it should only be available for devices with CIQ 3.4 or higher.

    I'm not claiming this is good code or realistic code, but devs have asked for ways to detect CIQ 5 at runtime (for example), so I don't think it's impossible for code that's *similar* to this example to appear in a real CIQ app. And ofc we can't assume that devs will write the most optimal code for every situation.

    TL;DR I don't think it's a good idea for the compiler to try to analyze the code to determine what CIQ API level is required. I think that's what minApiLevel (formerly minSdkVersion) in the manifest is for (as you said).

Comment
  • And if the intention is what Kyle writes, the version of each called system function (taking HAS into account) should be checked during compilation and only its use should limit devices when downloading applications from the store.

    This is an interesting idea, but I'm not sure it's feasible, because there are many ways for a dev to conditionally call system functions, other than using a has check for the function in question, and it's not always going to be clear to the compiler whether the condition is true or false for a given device.

    e.g. Consider an app that contains the following code:

    Assuming this is the only code in the app which depends on CIQ 3.4 (or higher), I would like the app to be available to older devices with CIQ 2, as well as newer devices. But according to your proposal, the compiler will probably decide that it should only be available for devices with CIQ 3.4 or higher.

    I'm not claiming this is good code or realistic code, but devs have asked for ways to detect CIQ 5 at runtime (for example), so I don't think it's impossible for code that's *similar* to this example to appear in a real CIQ app. And ofc we can't assume that devs will write the most optimal code for every situation.

    TL;DR I don't think it's a good idea for the compiler to try to analyze the code to determine what CIQ API level is required. I think that's what minApiLevel (formerly minSdkVersion) in the manifest is for (as you said).

Children
No Data