Is there a chart where I can see on how many percentage of the watches which SDK version is used? Something like this (android API level distribution): www.xda-developers.com/.../ orh https//developer.android.com/about/dashboards
Is there a chart where I can see on how many percentage of the watches which SDK version is used? Something like this (android API level distribution): www.xda-developers.com/.../ orh https//developer.android.com/about/dashboards
Not sure exactly what you are asking. The current SDK (4.0.3) is used to build apps for all CIQ devices, from the very earliest to the newest.
Are you looking for the VM levels on devices? Again, that's 1.2.x to 4.0.x, and while you can see which devices are CIQ 1,2,3, or 4, there's no breakdown of sales per device. If you want to see which are running what, see https://developer.garmin.com/connect-iq/compatible-devices/
Garmin doesn't release that level of info, but also understand that if you develop for one device, other devices are no more than a quick test. The va4/va4s and the legacy devices are like that, as are things like the Venu and the D2 Air, the fenix5 and the 935. As far as how popular your apps are on different devices, that also depends on what your app does.
If you're just starting out, start with a device you yourself have and then expand from there.
The sim is a simulator, not a device emulator, and there are things you may see in the sim that you will on a real device. With the AMOLED/LCD devices, they have a a few unique things too
I googled around and ended here, looking for the same info/stat.
Jim, you say it's "no more than a quick test", but that's not entirely correct, is it?. If your app uses something like checkboxmenuitem (menu2) then that dictates API level 3.0 and excludes once popular watches like Fenix 3 and forerunner 920XT/735XT. And FR 230/235/630.
I would be nice to see stats about how many of those are still being used. Maybe they are all collecting dust i a drawer by now. But I suspect many are still being used. Would be nice to know, so one can make an informed decision on what API/SDK to support.
Garmin should be able to pull this stat fairly easy and accurate, by looking at what devices still upload activities.
You linked to the compatibility list, which is good. Is there a similar list somewhere, showing what features came with what API level. It's of course shown for each thing in the toybox reference, but too cumbersome to go through them all if one wanted to figure out what can't be used for a given level... Maybe it unrealistic/unpractical to go below say 3.0 anyway.
Maybe it unrealistic/unpractical to go below say 3.0 anyway.
Lol my jungle file for a CIQ data field that supports CIQ 1, 2 and 3 devices is ~300 lines, to accommodate hardcoded "conditional compilation" (build excludes) for all the differences I care about, like CIQ level, memory, screen size/shape, fonts, etc. And I haven't even updated the app for the latest devices which came out in the past 2 years.
Yeah, a lot of that stuff can be done at runtime in a much simpler and forwards-compatible way, but that wastes precious memory.
"Just a simple test" tho. The reality is maybe ~100 devices collapses to a few dozen "families" of devices. Plus it's still work to determine which devices belong in the same "family", and exactly which traits each "family" has in common. Is FR935 the same as Fenix 5 (base model), or is it maybe closer to Fenix 5X Plus? (That was a rhetorical question, Jim, I actually know what the answer is.)
There are families which are related, but not identical, like how the Vivoactive 3 and 4 have different fonts than other devices in the same "generations". Like how the MARQs are analogous to certain Fenix watches, but they also have different fonts IIRC.
To be fair, I will say that while I know plenty of runners who still rock a Forerunner 235, not too many of them are interested in CIQ or even know what it is. But I could say the same about most runners.
But I find it funny that the same people who say "it's just a simple test" also say "you really have to test on the real device", as if it's trivial to go out and buy all the Garmin watches (or representative models for each "family"). The same people who say that testing is simple also oppose automated integration tests / CI/CD, and automation of the UI / simulator, whenever they're requested.
Hmm. Interesting points....
I guess the question I'm trying to answer is: What is a reasonable API level to aim for here late 2022???
Working on a simple widget to show a graph of upcoming electricity prices, so I don't need eg. Menu2, but it would make a nicer settings menu. And there are probably other issues I haven't hit yet, This was just the first error I got, when I added Fenix 3 to the device list. Build fail, as it's in xml. As I understand, everything in code, won't blow up until runtime....
At the GDVC 2021 there was a mention of providing more details as far as downloads per device in 2022, but I've not seen anything yet. There are some apps that gather their own stats.
Here's one for example: https://forums.garmin.com/developer/connect-iq/f/showcase/3129/nofrills-watch-face/49078#49078
I started many of my apps back in the CIQ 1 days, and have since just been adding new targets as they come out. As far as support of different features, I generally use "has" vs jungles, and part of is that some of these apps are older than jungles.
Also some things are determined by the device HW and not api/FW/VM level. The fr245 doesn't have a baro altimeter, so it doesn't have "floors", while the fr945 has a baro so has floors and they are both at the same API/FW/VM level for example, The chart I posted before doesn't get to that level
The f3 is a CIQ 1 device (it was announced 7 years ago). You can use the latest SDK to build for it, but you are limited to functions that are available for CIQ 1 devices. You need to get a newer device if you want to support newer functions. If I was developing a new app in 2022, I probably wouldn't even bother with the f3
Working on a simple widget to show a graph of upcoming electricity prices, so I don't need eg. Menu2, but it would make a nicer settings
Yeah, the original Menu isn't great - it looks very basic (not even mimicking the look and feel of native menus on older devices.) For newer devices I obviously use Menu2, and for older devices I use the open-source DynamicMenu, which tries to mimic the look and feel of native menus and has sublabels, icons, and the ability add/edit/delete items on the fly.
The original repo (and the vast majority of the work) was done by Dave Baldwin, I just forked the repo and fixed some bugs:
Github repo: https://github.com/flowstatedev/Dmenu
Old forum thread: https://forums.garmin.com/developer/connect-iq/f/discussion/7794/dynamic-menu-supports-ciq1-sublabels-icons-add-edit-delete-items-on-the-fly
I like trying to support as many devices as I can when I write apps, but you do run into a lot of limitations (especially with memory for data fields). But then again, even current-gen devices like Vivoactive 4 have the same amount of memory for data fields as discontinued devices released 6 years go. So I think it's sometimes a red herring to imply that all your problems will be solved by only supporting newer devices.
I guess the question I'm trying to answer is: What is a reasonable API level to aim for here late 2022???
If your app is super-fancy, and/or you don't feel like supporting literally 100 devices, maybe CIQ 3 is a good cutoff.
Then again, it's older watches which have the fewest features (especially the midrange ones), so there may be a handful of FR235 users (for example) who appreciate the value you add to their devices. It's just a lot of work supporting old watches, especially the ones with very limited amounts of memory.
I get that the F3 era devices are super old and that it gives API restrictions if one chooses to try to support it. But I'm still looking for a good source for what those limits are. An alternative to going through https://developer.garmin.com/connect-iq/api-docs/index.html and checking at each classes/method that I would potentially need. Not practical.
This gives something, but is not complete. The latest on system 6 is not tagged "SDK release". Nor is it easy to use.
https://forums.garmin.com/developer/connect-iq/tags/SDK%2bRelease
Also the question remains: How many of these old devices are still being used.
Where should one make the cut? 2.4.0? 3.0.0??
Garmin should have plenty of possibilities to know this. Like logging which devices are being sync'ed. Both via the Connect and the IQ/store mobile app as well as express.
It's things like this, no proper way to beta test and no monetization build into the app store that has keeps me away from doing CIQ apps until now. Everything feels like a 80% execution. A touch unprofessional/unpolished to be blunt. Although it's a LOT better today, that it was the last time I looked at it a few years back.