Update: March 28, 2020 This weekend, my son asked to play with the LEGO crane. WE pulled it out of the box, and reconnected all the pieces. Then I went to Google Play to download the app – 159 MB! The asset bundle dropped from 245 MB to 120MB Still big, but half the size it used to be. The fix was in the asset bundles for EACH model: Cut from 50-60mB each to 15-20MB each.
Big improvement LEGO!
Original Post: Feb 4, 2020
When I speak and write about web and app performance, I constantly talk about reducing the size of files to speed up the delivery of the content. I’d like to present another piece of the problem: the size of mobile apps.
If you’re like me – you’re constantly fighting the “your device is nearly full” alert. I have to back up my photos regularly, and police the apps that are on my phone – to make sure that I can still get emails, and take pictures of the kids.
This Christmas, my family got me an AWESOME gift…
Seriously, like a gagillion pieces and 1,000 steps of LEGO awesomeness. It has 8 motors, and 2 bluetooth controllers (and 12 AA batteries!) to run the whole shebang. It took several days to get this big guy assembled…
If you’re wondering how to control the BT – yup, there’s an app that pairs with the 2 controllers, and then you can maneuver this giant crane across your living room, scaring dogs and rolling over small piles of books.
So, I browse into Google Play, and I find the app:
The app is 296 MB??!! That’s crazy? So I back up my photos, and I delete a few apps, and install… It of course failed, so I had to go delete another app and try again.
The app is pretty cool
It walks you through how to test he different motors in your build, and then the controls to operate it are really good.
But when you first connect your device to the LEGO bluetooth hub, you are prompted to upgrade the firmware on the LEGO pieces. This is pretty normal – you can ship the code well after you finish the hardware. Interestingly, my phone did not need to download the BT firmware – it just started updating immediately….
This makes sense – the app is 300 MB because the firmware is embedded in the app!!
To prove this, I downloaded the app from APK Pure. A secret about apk files is that you can change the extension to .zip and unpack them… Low and behold:
The LEGO app is actually just 67 MB, and the Bluetooth firmware is 245 MB.
To ensure that the bluetooth update could be run quickly during device build, LEGO decided that embedding 245 MB of device firmware into the app was the best way. This, of course, means that to keep this app on my phone, I have to keep this 256 MB bluetooth update file on my device – at the expense of ~100 photos, or 4-5 other applications that I might want to have on my device instead.
I have a super cool family, who got me an awesome Christmas gift. But, as of today, I cannot use it – I had to uninstall the Control+ app from my phone to have space for photos and other apps that I use daily.
This design flaw unfortunately prevents me (and the kids) from playing with this awesome LEGo build that I have.