flutter/packages/flutter_tools/templates
Gray Mackall f964f15dcb
Fix flutter build aar for modules that use a plugin (#154757)
https://github.com/flutter/flutter/pull/151675 bumped module templates to AGP 8.1.

In doing so, I tried to work around a behavior change [that was new in AGP 8.0](https://developer.android.com/build/releases/past-releases/agp-8-0-0-release-notes):
> AGP 8.0 creates no SoftwareComponent by default. Instead AGP creates SoftwareComponents only for variants that are configured to be published using the publishing DSL.

by using AGP's publishing DSL to define which variants to publish in the module's ephemeral gradle files:
```
android.buildTypes.all {buildType ->
    if (!android.productFlavors.isEmpty()) {
        android.productFlavors.all{productFlavor ->
            android.publishing.singleVariant(productFlavor.name + buildType.name.capitalize()) {
                withSourcesJar()
                withJavadocJar()
            }
        }
    } else {
        android.publishing.singleVariant(buildType.name) {
            withSourcesJar()
            withJavadocJar()
        }
    }
}
```

The problem is that this doesn't get applied to the plugin projects used by the module, so if a module uses any plugin it breaks. This PR fixes that by applying similar logic, but to each project (not just the module's project).

Tested manually with https://github.com/gmackall/GrayAddToApp, and also re-enabled an old test that tested this use case as a part of the PR.

Fixes: https://github.com/flutter/flutter/issues/154371
2024-09-10 16:42:22 +00:00
..
app Switch to more reliable flutter.dev link destinations in the tool (#150587) 2024-06-26 23:30:39 +00:00
app_integration_test/integration_test Switch to more reliable flutter.dev link destinations in the tool (#150587) 2024-06-26 23:30:39 +00:00
app_shared Add migration to git ignore SwiftPM build directories (#152766) 2024-08-05 20:26:16 +00:00
app_test_widget/test [flutter_tools] Use proper project name in templates (#96373) 2022-02-02 06:50:14 -08:00
cocoapods Set template and migrate apps to iOS 12 minimum (#140823) 2024-01-03 00:47:40 +00:00
module Fix flutter build aar for modules that use a plugin (#154757) 2024-09-10 16:42:22 +00:00
package [tool] Update .gitignore templates to include .flutter-plugins files (#152950) 2024-09-04 20:54:24 +00:00
package_ffi [tool] Update .gitignore templates to include .flutter-plugins files (#152950) 2024-09-04 20:54:24 +00:00
plugin Switch to more reliable flutter.dev link destinations in the tool (#150587) 2024-06-26 23:30:39 +00:00
plugin_cocoapods Add PrivacyInfo.xcprivacy to plugin template (#148485) 2024-05-16 19:58:11 +00:00
plugin_ffi Switch to more reliable flutter.dev link destinations in the tool (#150587) 2024-06-26 23:30:39 +00:00
plugin_shared [tool] Update .gitignore templates to include .flutter-plugins files (#152950) 2024-09-04 20:54:24 +00:00
plugin_swift_package_manager Add PrivacyInfo.xcprivacy to plugin template (#148485) 2024-05-16 19:58:11 +00:00
skeleton Switch to more reliable flutter.dev link destinations in the tool (#150587) 2024-06-26 23:30:39 +00:00
xcode/ios/custom_application_bundle Migrate Xcode projects last version checks to Xcode 15.1 (#140256) 2024-01-03 23:05:46 +00:00
README.md FFI plugins (#96225) 2022-01-26 23:44:45 +01:00
template_manifest.json Add PrivacyInfo.xcprivacy to plugin template (#148485) 2024-05-16 19:58:11 +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.