This directory contains a partial snapshot of an old Flutter project; it is intended to replace the corresponding parts of a newly Flutter-created project to allow testing plugin builds with a legacy project.
It was originally created with Flutter 2.0.6. In general the guidelines are:
- Pieces here should be largely self-contained rather than portions of
major project components; for instance, it currently contains the entire
android/directory from a legacy project, rather than a subset of it which would be combined with a subset of a new project'sandroid/directory. This is to avoid random breakage in the future due to conflicts between those subsets. For instance, we could probably get away with not including android/app/src/main/res for a while, and instead layer in the versions from a new project, but then someday if the resources were renamed, there would be dangling references to the old resources in files that are included here. - Updates over time should be minimal. We don't expect that an unchanged project will keep working forever, but this directory should simulate a developer who has done the bare minimum to keep their project working as they have updated Flutter.
- Updates should be logged below.
The reason for the hybrid model, rather than checking in a full legacy project, is to minimize unnecessary maintenance work. E.g., there's no need to manually keep Dart code updated for Flutter changes just to test legacy native Android build behaviors.
Manual changes to files
The following are the changes relative to running:
flutter create -a java all_packages
and then deleting everything but android/ from it:
- Added license boilerplate.
- Replaced
jcenterin build.gradle withmavenCentral, due to the jcenter.bintray.com shutdown. - Update
compileSdkVersionfrom 30 toflutter.compileSdkVersioninbuild.gradleto maintain compatibility with plugins that use Flutter's most recently supported API version. - Modifies
gradle-wrapper.propertiesto upgrade the Gradle version from 6.7 to 8.4. If a user runs into an error with the Gradle version, the warning is clear on how to upgrade the version to one that we support. - Modifies
settings.gradleto upgrade the Android Gradle Plugin (AGP) from version 4.1.0 (originally set inbuild.gradle; see bullet below) to 8.3.0. If a user runs into an error with the AGP version, the warning is clear on how to upgrade the version to one that we support. - Refactor plugin to use declarative Gradle apply instead of the
imperative apply (this includes moving where the Android Gradle
Plugin (AGP) version is set from
build.gradletosettings.gradle).