flutter/packages/flutter_tools/templates/module
Gray Mackall b98d48549c
Make flutter tool enforce >= kotlin 1.7.0, Gradle 7.0.2, and AGP 7.0.0, and Fix test failures blocking androidx upgrade (#149204)
PR to pave the way for https://github.com/flutter/engine/pull/53001 to re-land

Summary: 
- Enforces use of Kotlin >= `1.7.0` (please see below note)
- Fixes ci failures that prevented the above PR from landing.

Details:

Because it landed initially, we are able to fake the roll in this PR to fix all the tests ([see my comment](https://github.com/flutter/flutter/pull/149204#discussion_r1617924772)).

Fixes all the tests that failed:
1. `module_test` failing on multiple platforms (3/9 of the failures). 
Failure is 
```
> Android resource linking failed
   ERROR:/b/s/w/ir/x/t/flutter_module_test.KECMXW/hello/.android/plugins_build_output/device_info/intermediates/merged_res/release/values/values.xml:194: AAPT: error: resource android:attr/lStar not found.
```

This is a rather unhelpful error message but some [folks online suggest](https://stackoverflow.com/a/69050529) that upgrading your `compileSdk` version fixes this.
These resolve when I remove the dependency on the long discontinued [package_info](https://pub.dev/packages/package_info) and [device_info](https://pub.dev/packages/device_info) packages, perhaps because they are transitively pulling in low `compileSdk` versions? This is unclear to me.

2. `module_custom_host_app_name_test` was failing for the same reason (another 3/9, or cumulative 6/9).
3. `tool_integration_tests_3_4` was a flake 🙂 (7/9)
4. `framework_tests_slow` needed a newer version of the Kotlin Gradle plugin (the flutter tool tells us this, so I just upgraded as suggested) and it resolved (8/9)
5.`android_preview_tool_integration_tests` needed newer AGP and KGP versions. I also refactored the tests, and bumped our error versions, fixing https://github.com/flutter/flutter/issues/142653.

**Note that the bump to KGP is not in line with our policy** - we didn't warn for `1.5.0-1.6.x` for a release (or at all) before dropping support. But I think it might still be justified:
- The bump to our androidx libraries unblocks ongoing Scribe work, and also includes a fix for a [memory leak](https://github.com/flutter/flutter/issues/129307#issuecomment-1601636959) and a [crash on folding phones](https://github.com/flutter/flutter/issues/114868#issuecomment-2133226962), among many other bug fixes.
- Gradle [doesn't test on half of that range](https://docs.gradle.org/current/userguide/compatibility.html#kotlin), and so we implicitly can't claim to support it either. More generally, our Java and Kotlin support ranges should probably strictly fall within what Gradle tests.
2024-06-18 20:24:09 +00:00
..
android Make flutter tool enforce >= kotlin 1.7.0, Gradle 7.0.2, and AGP 7.0.0, and Fix test failures blocking androidx upgrade (#149204) 2024-06-18 20:24:09 +00:00
common bump cupertino_icons to 1.08 (#146806) 2024-05-10 21:55:52 +00:00
ios Adjust the position of require File.expand_path (#141521) 2024-01-21 06:18:26 +00:00
README.md Rename 'application' back to 'module', and make 'app' the default again for templates. (#22888) 2018-10-10 11:01:40 -07:00

Templates for Flutter Module

common

Written to root of Flutter application.

Adds Dart project files including pubspec.yaml.

android

library

Written to the .android/ hidden folder.

Contents wraps Flutter/Dart code as a Gradle project that defines an Android library.

Executing ./gradlew flutter:assembleDebug in that folder produces a .aar archive.

Android host apps can set up a dependency to this project to consume Flutter views.

gradle

Written to .android/ or android/.

Mixin for adding Gradle boilerplate to Android projects.

host_app_common

Written to either .android/ or android/.

Contents define a single-Activity, single-View Android host app with a dependency on the .android/Flutter library.

Executing ./gradlew app:assembleDebug in the target folder produces an .apk archive.

Used with either android_host_ephemeral or android_host_editable.

host_app_ephemeral

Written to .android/ on top of android_host_common.

Combined contents define an ephemeral (hidden, auto-generated, under Flutter tooling control) Android host app with a dependency on the .android/Flutter library.

host_app_editable

Written to android/ on top of android_host_common.

Combined contents define an editable (visible, one-time generated, under app author control) Android host app with a dependency on the .android/Flutter library.

ios

library

Written to the .ios/Flutter hidden folder.

Contents wraps Flutter/Dart code for consumption by an Xcode project.

iOS host apps can set up a dependency to this contents to consume Flutter views.

host_app_ephemeral

Written to .ios/ outside the Flutter/ sub-folder.

Combined contents define an ephemeral (hidden, auto-generated, under Flutter tooling control) iOS host app with a dependency on the .ios/Flutter folder contents.

The host app does not make use of CocoaPods, and is therefore suitable only when the Flutter part declares no plugin dependencies.

host_app_ephemeral_cocoapods

Written to .ios/ on top of host_app_ephemeral.

Adds CocoaPods support.

Combined contents define an ephemeral host app suitable for when the Flutter part declares plugin dependencies.