Legacy storage on Android for savegames
eadmaster opened this issue · 3 comments
Is your feature request related to a problem? Please describe.
I'd like to backup and restore my saves without rooting the device.
Describe the solution you'd like
set the LegacyExternalStorage
flag in the app manifest and change the savegames location to /sdcard/AM2R
.
Mame4Droid is currently providing this as an option.
Describe alternatives you've considered
Rooting the device.
Additional context
Add any other context or screenshots about the feature request here.
Hmm. I like the consideration to make saves accessible/non-deleted between installations, but this seems to rely on functionality that will likely be phased out in the near future (knowing Google's approach) and I'm not entirely sure we can even repoint GameMaker at that directory if we were to get the flag into the app manifest.
Worth looking into at some point, but I'll be up front and say it's not a huge priority what with the current internal process going on unless @Miepee decides to take on some Android pain.
An alternative, we may have a manual save import/export feature into the app own scoped storage.
I'd like to backup and restore my saves without rooting the device.
You actually can. I found a way to do that, but forgot to document it publically / put it on faq
Only works tho, if you're on Android 11 or less (or in other words, will not work for Android 12 and higher).
- Install/download ADB
- Enable developer mode on Android (if not done already)
- Connect your phone via USB to the PC, and allow ADB developer access
- open a terminal, and execute
adb backup -f ./mybackup.ab -apk com.companyname.AM2RWrapper
(you may need to replacecom.companyname.AM2RWrapper
withcom.lojical.AM2R
on specific am2r versions, or with something else entirely for mods. You can useadb shell pm list packages -f -3
to list out all packages installed onto the system and find the name from there.) - Go to your phone, and type in your phone password in order to allow the backup
- Now a
mybackup.ab
file should have been created in the folder you were in - Download Android-Backup-Extractor (see the right side with the releases tab)
- Have some Java runtime installed
- Execute
java -jar ./abe unpack <path to the mybackup.ab> mybackup.tar
- Open
mybackup.tar
with an unarchiver of your choice. All AM2R data is gonna be found inapps/<packagename from above>/f
set the LegacyExternalStorage flag in the app manifest and change the savegames location to /sdcard/AM2R.
I am not that familiar with Androids storage systems that developed over the years. In order for your approach to work, would one need to do both, or would simply setting the LegacyExternalStorage
be enough?
Because for GameMaker games, changing the save location is simply not possible. The runner doesn't allow you to access anything (regardless of reading or writing) outside of /data/data/<package name>/files
See the old GMS1.4 documentation here
This also means, that a "save import/export"- feature would also be impossible to implement.
MAME4droid is able to get away with that, because they have the possibility to write their own apk and code for it. With GameMaker (which is what the project is written) we do not have such luxury, as we're bound to whatever YoYoGames decides would be best.