Skip to main content

Part 1: Restoring the LEGO MINDSTORMS App and Content on Android


 



Summary: This blog was written by Sizlaq. It is about how he used a saved Android split APK set and a rooted app-data backup to restore LEGO MINDSTORMS Robot Inventor with its downloaded content already in place.

Important Note: The files linked in this post are external archive downloads for the LEGO MINDSTORMS Robot Inventor app and its related content. LEGO MINDSTORMS, LEGO Education and Robot Inventor are LEGO Group products/trademarks. Use these downloads only where you are legally entitled to do so and only for legitimate preservation, repair, education or personal restore purposes. I do not own the LEGO app or content, and the links are provided as a convenience for people trying to restore a legacy installation. Download and run archived software at your own risk, and scan files before installing them.

Why these backups mattered

The reason I started looking into this was simple: LEGO had announced that the LEGO MINDSTORMS Robot Inventor apps were being discontinued after 1st June.

That raised two separate risks. The first risk was that the app itself might become difficult to download in the future. The second, and more awkward, risk was that even if the app could still be installed, the in-app downloadable content might disappear or stop downloading.

For this to be useful as a real restore, I did not want to only archive the installer. I wanted to prove that I could start from a clean device or machine, install the app, restore the saved app data, and end up with the tutorials, builds and downloaded content already available inside the app.

That became the aim of the whole exercise: not just “can I install the app?”, but “can I restore the app to a usable state without depending on LEGO’s download servers still being available?”

Other platform restore guides

This restore was also done for the other platforms:

Update these placeholder links once the other blog posts have been published.

The starting point

I started with Android because that was the version I was already using, and it gave me a good working reference for what a healthy LEGO MINDSTORMS Robot Inventor install should look like.

That mattered because a backup is only useful if you know what you are trying to get back to. I wanted to be able to open the restored app and see that it behaved like the original install, with the content already present, rather than being left with an empty app shell that still needed to contact LEGO’s servers.

The Android restore quickly became the most technical platform in the series. The app files are one part of the backup, but the content backup is separate because Android stores the important data inside the app’s private storage area.

/data/user/0/com.lego.retail.mindstorms

That private directory is not something a normal file manager or non-root ADB session can freely write to. To restore the app properly, I needed root access so that the saved app-data folder could be copied back into place with the right ownership and labels.

What I was trying to prove

The Android test was built around a very specific question: could I take a clean Android device, use the archived app files and restored app data, and then open MINDSTORMS with the downloaded content already available?

That meant the restore had to cover both of these pieces:

  1. the split APK files used to install the app;
  2. the private app-data backup containing the downloaded content.

The backup I used was deliberately kept as two separate zip files so the two jobs were clear:

lego-mindstorms-apk.zip
com.lego.retail.mindstorms.zip

Important Android limitation: ARM64 only

The saved Android APK set only includes the ARM64 split:

split_config.arm64_v8a.apk

That means the target Android device must support arm64-v8a. There is no separate 32-bit ARM install option in this backup.

Before installing, I checked the device ABI with:

adb shell getprop ro.product.cpu.abilist

The restore should only continue if the output includes:

arm64-v8a

What was required for the Android restore

For Android, the restore needed more than a copy of the app. The final backup had to include the app installation files, the app’s private data folder, and clear instructions that explained how those pieces fit together.

The required pieces were:

  • an Android device that supports arm64-v8a;
  • the saved split APK set for LEGO MINDSTORMS Robot Inventor;
  • the saved app-data/content backup for com.lego.retail.mindstorms;
  • ADB access from a computer;
  • root access on the Android device so the private app-data folder could be restored;

The important limitation was that the APK backup only contained the ARM64 split. That made the device architecture check a real requirement rather than an optional detail.

Key steps in the Android approach

At a high level, the Android approach was to prove the restore in two layers. First, the app itself had to be installable from the archived split APK set. Second, the app data had to be restored so that the downloaded content was available without relying on LEGO’s servers.

The key steps were:

  1. confirm the device supported the supplied ARM64 APK split;
  2. install the archived Android app package set;
  3. let Android create the app’s private storage area;
  4. restore the saved com.lego.retail.mindstorms app-data backup into that private storage area;
  5. preserve the correct ownership and Android file context so the app could read its data;
  6. open the app and confirm that the restored content was already present.

This outline matters because it shows why the Android restore was not just an APK reinstall. The content lived in the private app data, so the restore had to include that data as well.

Findings and challenges

The main finding was that Android was the most sensitive platform because the useful content was stored inside private app storage. Without restoring that folder, the app could be installed but would not necessarily be useful as an offline restore.

The biggest challenge was that private Android app storage is protected. A normal file copy is not enough, and a non-root backup would not give the same level of control. Root access made it possible to put the app data back where Android expected it.

The second challenge was the split APK format. The app was not a single APK file; it was a set of APK files that had to match the target device. Because the saved set only included arm64-v8a, older or 32-bit-only devices were not suitable for this archive.

What success looked like

The success criteria was not just that Android showed the app icon. The real test was opening MINDSTORMS and confirming that the restored content was already there.

That was the point of backing up the app’s private data folder in the first place. It meant the restore did not rely on the in-app content download continuing to work in the future.

Lessons from the Android restore

The Android restore showed that the app and the content need to be treated as two separate pieces. The APK files can reinstall the app, but they do not automatically bring back the downloaded content.

The other lesson was that Android is much stricter than desktop platforms. Without root, the restore cannot properly write back into the app’s private data folder. With root, the restore is possible, but the commands need to be followed carefully because ownership and SELinux labels matter.

Final thoughts

Android was the first platform I restored because it was the version I already had in use. It also became the best reminder that archiving an installer is not always enough.

For LEGO MINDSTORMS Robot Inventor, the useful restore is the combination of the app and its downloaded content. Preserving both meant I could get back to a usable app without depending on future server availability.

Download the Android app and content archive

The Android split APK backup, app-data/content backup and an installation guide are available here:

Download the Android app and content archive

MINDSTORMS-Android-Installation-Guide.txt
lego-mindstorms-apk.zip
com.lego.retail.mindstorms.zip


Popular posts from this blog

Celebrating 25 Years of MINDSTORMS

In celebration of the 25th Anniversary of MINDSTORMS, we take a trip through history. Please also visit ROBOTMAK3RS Community every week as we highlight different projects all through 2023 in celebration of the anniversary. Some of the early history is based on the content shared by  Coder Shah  in our  MINDSTORMS EV3 Community Group . Some of the text and links may have been edited from his original posts for consistency and clarity.  1984 - Kjeld Kirk Kristiansen watched a TV program called "Talking Turtle," where MIT professor Seymour Papert demonstrated how children could control robot "turtles" using LOGO, a programming language he developed. 1988 - The collaboration between MIT and LEGO resulted in LEGO TC Logo in 1988, which allowed students to control LEGO models using computer commands. The video shows Papert demonstrating TC Logo. 1990 - LEGO TC Logo was hampered since the robots you built had to be tethered to a personal computer. LEGO and MIT...

Celebrating MINDSTORMS with a Remix - Part 3

The ROBOTMAK3RS continued their celebration of the 25th Anniversary of MINDSTORMS through these Fall and Winter remix projects. Each ROBOTMAK3R was tasked with selecting one LEGO set of their choice and combining it with a MINDSTORMS set. Below are the five amazing models they came up with. Braill3 by Jerry Nicholls Braill3 is an EV3-based LEGO Braille bricks reader. This robot uses its fingertip, made from three touch switches, to read messages written using the LEGO Braille bricks and will speak out what it detected. If it sees a simple maths problem it will attempt to solve it and give the answer as well. To learn more about the process of creating this machine, read Jerry's blog . Braill3 can be viewed here . Set Review: The Braille Bricks set is well thought out. The ratios of the letters is suitable for general use and the addition of some punctuation and arithmetic operators is excellent. There is a card showing what bricks there are and their quantities, but no form of sort...

Celebrating MINDSTORMS with a Remix - Part 2

The ROBOTMAK3RS continued their celebration of the 25th Anniversary of MINDSTORMS through these summer and fall remix projects. Each ROBOTMAK3R was tasked with selecting one LEGO set of their choice and combining it with a MINDSTORMS set. Below are the five amazing models they came up with. Remote controlled material handle r by Jozua van Ravenhorst (aka Mr Jo) This remix combines the LEGO Technic Material Handler (42144) with MINDSTORMS EV3 (31313) It uses the power of pneumatic cylinders to move objects around. By using a bluetooth remote control, very precise movements can be made with this model. Touch sensors in the base chassis prevent the turret twisting the cables that go through the turntable to much. The program has several protections to prevent over pressurizing the system for each of the 3 individual pumps and valves that control the 2 booms and claws. The real version of this machine is mostly used in waste material sites to bring the material to machines that sort and...