Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit

In order to continue releasing updates on Google Play, we can no longer access the external storage
directly; instead, we must use the Storage Access Framework (SAF). For more information, see:

By default, APDE stores the sketchbook on the external storage. In order for this to keep working,
we need to use the SAF to access the sketchbook. We *could* put the sketchbook on the internal
storage, but this is bad for a variety of reasons, including:

 - users lose access to existing sketches
 - we no longer guarantee that your sketches still exist when you reinstall APDE
 - you can't interact with sketches outside of APDE for things like version control and managing
   data files

So in short, this really sucks.

This commit introduces a `MaybeDocumentFile` abstraction which wraps AndroidX's `DocumentFile`,
which allows us to treat `DocumentFile` very similarly to a raw `File`. This has bad performance
ramifications, but it seemed a lot easier than rewriting everything to use the SAF directly.

This has been tested on the full Espresso test suite and is passing for both Android 9 and Android
11 (except for exportTest on Android 11). This gives me a reasonable degree of confidence that
things are working, but there is a lot of surface area and certainly many more bugs that I haven't
found yet.

All functionality should work with the SAF with the exception of git integration for SAF
sketchbooks, since git fundamentally requires access to a raw filesystem. For now, the git tool is
disabled entirely. The plan is to re-enable the git tool for internal storage sketchbooks and
pre-Android 10 devices, and point people at an external git client like MGit for external storage
sketchbooks. If that doesn't work for some reason, I could release a standalone app for doing git
things based on the existing git tool.

There are also these outstanding tasks:

 - Prompt the user to pick an external storage sketchbook location when they first open APDE
 - Support migrating an external storage sketchbook to the new system
 - Test upgrading the app from the old system to the new system
 - Test upgrading Android from pre-Android 10 to Android 10+
 - Re-enable git integration in a limited capacity
 - Lots of general testing

Git stats


Failed to load latest commit information.
Latest commit message
Commit time


APDE (Android Processing Development Environment) is a Processing IDE for creating and running sketches on Android devices. You can download APDE from Google Play or the releases page.

Check out the Wiki for documentation. If you just installed APDE and you're looking to learn the basics, then head over to Getting Started.