I designed a huge watch that is 4.7 MB, is there a file size limit?

Any advice would be highly appreciated!

I made an animated l watch that I published that works great - It's goal based, has 10 crisp static backgrounds (PNGs), has 21 small sprites (PNGs) and uses a .png font instead of my usual vector font. Super Fancy, its 2.7 MB - runs on about 15/123.9 kB memory (measused on simulation for a Venu S2).

I have no layouts, no strings, or any calls to anything but a single drawables.xml. Everything is run and formatted manually in view.mc for each watch with if/else statements. The watch runs on the normal second refresh only with Burn Protection, and it doesn't call any animation layers (No Monkey Motion) or use high power. It's manually animated by using seconds%2 to hunt down bitmaps out of long arrays to make the animations a  no-cost flickering loop.

I wanted to improve the watch further by adding an animated background in an update. I doubled the backgrounds and set them to flicker, so now there are 21 sprites and 21 backgrounds. I used .jpeg instead of .png to try to reduce file size, but the file ended up being 4.7 MB which is HUGE. I'm surprised it even was able to download a demo version. (Fitbit won't even accept a watchface bigger than 3 MB- they can barely download at 1.2MB, so I was impressed with Garmin)

The 4.7MB watch worked great on my simulation.( It was still running at 15.7/123.9kB) but practically broke my real device. I've never seen my watch freeze up like this. 

First it really struggled and glitched all day just trying to get the demo version. Then when it finally uploaded it didn't crash, but it was mostly frozen. It seemed to refresh every minute, instead of second.  

Obviously since it is a disaster, I am just not release any updates on my already working watch. 

Do you think 4.7 MB or 5MB is the file size limit on a Garmin?

Anyone have experience with huge watch file sizes?

Thank you!

(I'm using a Venu S2 and I am only publishing to watches with Version 5 of the API.)

  • Your problem seems to be related to the CPU power needed for animating (probably) full screen animations and less to the prg file size

  • Yeah unfortunately the simulator doesn't accurately simulate certain device limitations. Another example is that you can get onUpdate() to be called in the sim much more frequently than it could be called on a real device, if you write some incorrect code that would never work on a real device.

  • Yes, they are full screen animations.

    Wow, you are right. It probably is a CPU issue. I was thinking this whole time about RAM only. Opening huge files every second could be causing it. My understanding is that it calls the Font, the Sprite, and the Background every second anyways in the onUpdate(). So I figured that if I only change the background on a seconds basis, it's not really changing anything it isn't already doing. I don't know how people are using Monkey Motion which loads an entire gif in miliseconds and keeping the CPU and Memory low - it must be optimized for that. 

    I've never animated a huge 454 pixel bitmap before. I've only ever animated tiny sprites. So, I might try Monkey Motion as an alternative. Thanks!!

  • Oh! I had no idea that the simulator calls onUpdate() more. That explains a lot, because it is refreshing so slowly (I timed it and it took it 20 seconds to refresh) Maybe its my own Battery Saving Settings causing this. Or the device doesn't like huge multicolored complex .jpegs and it could be a color mapping issue that isn't on the simulator. 

  • You might be able to "tune" your app a bit so you don't try to do this all the time when a watch faces starts up.  Remember, that when you are loading resources, that hits the file system, so you may want to make sure you're not doing that more than needed.

    As far as the original question about size while you can have an app that's 4.xmb, there's another thing that matters.  You can see this in the CIQ mobile app when you view what's installed on a device.

    With the va4, for example, you can see how many apps are installed and what the max number you can install is.  With the va4, the max is 32 apps.

    And right under where you see these numbers, you also see "Space Available"  that's how much file system space all the CIQ apps are using, and how much more can be used. In the case of the va4, the total space for all apps is about 16mb

    So with things that are large, like your watch face, you may only be able to install a small number of apps.  Newer devices have more space available for CIQ apps.

  • Oh! I had no idea that the simulator calls onUpdate() more. That explains a lot, because it is refreshing so slowly (I timed it and it took it 20 seconds to refresh)

    Sorry, I really worded that wrong.

    I meant it's possible to create an (incorrect) situation where the sim *could* call onUpdate() too often, by writing bad code (which wouldn't work on a real device for various reasons.) It's very unlikely this is what's happening in your case. But in the case I'm referring, the rate of calling onUpdate() is only limited by the speed of your CPU.

    Probably shouldn't have mentioned it, sorry!