flutter/packages/flutter_tools/templates
Camille Simon 594ff98a65
[Android] Add Java/AGP/Gradle incompatibility warning to flutter create (#131444)
Adds warning to `flutter create` command that checks if detected Java version is compatible with the template AGP and template Gradle versions. If a developer is building for Android and their Java version is incompatible with either the AGP or Gradle versions that Flutter currently supports by default for new Flutter projects, then

- a warning will show noting the incompatibility and
- steps will be shown to fix the issue, the recommended option being to configure a new compatible Java version given that Flutter knows we can support the template Gradle/AGP versions and updating them manually may be risky (feedback on this approach would be greatly appreciated!)

Given that the template AGP and Gradle versions are compatible, this PR assumes that the detected Java version may only conflict with one of the template AGP or Gradle versions because:
 - the minimum Java version for a given AGP version is less than the maximum Java version compatible for the minimum Gradle version required for that AGP version (too low a Java version will fail AGP compatibility test, but not Gradle compatibility).
- the maximum Java version compatible with minimum Gradle version for a given AGP version is higher than minimum Java version required for that AGP version (too high a Java version will fail Gradle compatibility test, but not AGP compatibility test).

Fixes https://github.com/flutter/flutter/issues/130515 in the sense that `flutter create foo`; `cd foo`; `flutter run` should always be successful.
2023-09-20 16:01:04 +00:00
..
app Native assets support for MacOS and iOS (#130494) 2023-09-10 08:07:13 +00:00
app_integration_test/integration_test Add an integration test to plugin template example (#117062) 2022-12-15 19:49:14 +00:00
app_shared [flutter roll] Revert "Native assets support for Linux" (#135069) 2023-09-20 00:06:45 +00:00
app_test_widget/test [flutter_tools] Use proper project name in templates (#96373) 2022-02-02 06:50:14 -08:00
cocoapods Add native unit tests to iOS and macOS templates (#117147) 2022-12-21 19:10:22 +00:00
module [Android] Add Java/AGP/Gradle incompatibility warning to flutter create (#131444) 2023-09-20 16:01:04 +00:00
package No longer include .packages in created .gitignore files (#133484) 2023-08-30 00:40:01 +00:00
package_ffi Native assets support for MacOS and iOS (#130494) 2023-09-10 08:07:13 +00:00
plugin Remove @NonNull to avoid warning (#129472) 2023-06-29 21:34:31 +00:00
plugin_ffi Update plugin_ffi generated file to match FFIgen 9.0.0 (#134614) 2023-09-14 06:42:41 +00:00
plugin_shared Native assets support for MacOS and iOS (#130494) 2023-09-10 08:07:13 +00:00
skeleton [flutter_tools] modify Skeleton template to use ListenableBuilder instead of AnimatedBuilder (#128810) 2023-07-06 15:14:51 +00:00
xcode/ios/custom_application_bundle New tooling for iOS 17 physical devices (#131865) 2023-08-09 19:25:12 +00:00
README.md FFI plugins (#96225) 2022-01-26 23:44:45 +01:00
template_manifest.json Native assets support for MacOS and iOS (#130494) 2023-09-10 08:07:13 +00:00

This directory contains templates for flutter create.

The *_shared subdirectories provide files for multiple templates.

  • app_shared for app and skeleton.
  • plugin_shared for (method channel) plugin and plugin_ffi.

For example, there are two app templates: app (the counter app) and skeleton (the more advanced list view/detail view app).

  ┌────────────┐
  │ app_shared │
  └──┬──────┬──┘
     │      │
     │      │
     ▼      ▼
┌─────┐    ┌──────────┐
│ app │    │ skeleton │
└─────┘    └──────────┘

Thanks to app_shared, the templates for app and skeleton can contain only the files that are specific to them alone, and the rest is automatically kept in sync.