Starting in ODK Collect v1.26, a banner will be displayed on the main screen to trigger a storage migration. For most people, migration should be safe, quick, and have no impact on data collection.
Organizations with custom Android applications or who directly pull data from or push data to Collect should read this post carefully before migrating. Feel free to ask clarifying questions in the comments.
Why do I need to migrate files?
Google recently started requiring that applications in the Play Store make compatibility updates with every Android release. They've also made a requirement for applications to use private data folders. Prior to v1.26, ODK Collect stores all of its files in a directory that will no longer be available to updated applications after November 2020.
We are requiring users to trigger this migration manually starting with v1.26 to give organizations time to adapt before it is required. We will trigger the migration automatically in v1.29.
What are the implications of this migration?
For most people, migration should be safe, quick, and have no impact on data collection. However, one change is that ODK form definitions and filled form submissions will be deleted when ODK Collect is uninstalled. Before the migration, files stayed on /sdcard/odk
even if the application was deleted.
If your workflow requires you to manually access ODK files, you will find them at /sdcard/Android/data/org.odk.collect.android/files
instead of /sdcard/odk
.
You will no longer be able to use Android applications that directly access ODK files (see below).
If you're thinking about buying Android 11 devices (available fall 2020), note that they will not be able to run versions of ODK Collect prior to the v1.29 release.
Is there any risk for data loss in the storage migration?
The storage migration needs to move all files managed by ODK Collect which may include unsent submissions. We strongly encourage you to send all of your submissions before migrating. If you can't do this for some reason, we believe that the risk of data loss due to migration is extremely low.
What if I use ODK Collect with an external Android application that accesses /sdcard/odk
?
For now, you should not perform the migration.
We have started collecting requirements for new ways for Android applications to get the same information from ODK Collect. Please comment on Collect will need to stop using /sdcard/odk for files describing what problem your application solves and what information it needs from ODK Collect.
What happens if I don't migrate before v1.29 is released?
If you don't manually trigger the upgrade and then get v1.29, files will automatically be migrated.
If you don't manually trigger the upgrade and then miss the v1.29 update but get later updates, it will be impossible for ODK Collect to access your old files. It will still be possible to recover your files manually if needed (with a file browser Android app or adb).