Commit Graph

262 Commits

Author SHA1 Message Date
Tomasz Gucio
99c7e9f088
Add spaces after flow control statements (#126320) 2023-05-15 11:07:30 +02:00
Andrew Kolos
5b2f658ff5
Revert "[tool] Move Java functions to their own file" (#126569)
Reverts flutter/flutter#126086.

This PR changed the interfaces of some classes, namely `AndroidSdk`, and deleted a global.

These classes had custom overrides in g3 that were not updated with a g3fix, so this PR has broken tests. See https://b.corp.google.com/issues/281945232 (non-public link)
2023-05-11 17:06:57 +00:00
Andrew Kolos
0a63cd70f1
[tool] Move Java functions to their own file (#126086)
This is the first step in unifying Java-finding logic across the tool. If curious, see #126029 for an example of what all the changes will probably entail.

Moves java-related functionality like `AndroidSdk.findJavaHome` to a new class, `Java`.

See tracking issue https://github.com/flutter/flutter/issues/126126 for more.
2023-05-11 04:32:25 +00:00
Bartek Pacia
51251f2e57
Refactor Flutter Gradle Plugin so it can be applied using the declarative plugins {} block (#123511)
This PR aims to resolve #121552.

Resources used:
- [Developing Plugins](https://docs.gradle.org/current/userguide/custom_plugins.html)
- [Using Gradle Plugins](https://docs.gradle.org/current/userguide/plugins.html#sec:plugins_block)
- [Composite Builds Plugin Development Sample](https://docs.gradle.org/current/samples/sample_composite_builds_plugin_development.html)

This PR also paves way for #121541, because apps will no longer have:

```groovy
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
```

hardcoded. Instead, they'll use:

```groovy
plugins {
    // ...
    id "dev.flutter.flutter-gradle-plugin" // the exact name is tentative
}
```
2023-04-19 17:56:22 +00:00
chunhtai
55502fc36a
Add vmservice for android build options (#123034)
https://github.com/flutter/flutter/issues/120408
2023-04-18 18:16:09 +00:00
Reid Baker
2383400fe0
Add Java-Gradle-AGP validation to flutter analyze (#123916)
https://github.com/flutter/flutter/issues/123917

Doc covering a broad set of issues related to android studio updating. 

https://docs.google.com/document/d/1hTXkjbUrBnXgu8NQsth1c3aEqo77rWoEj8CcsQ39wwQ/edit?pli=1#

Specifically this pr: 
- Adds new functions to find a projects AGP, Gradle and java versions,
and tests.
- Adds new functions that take versions and parse if the versions are
compatible with each other, and tests.
- Adds validator for `flutter analyze --suggestions` that evaluates the
java/gradle/agp versions and checks if they are compatible, and
integration test.
- Updates the version of gradle used by
dev/integration_tests/flutter_gallery/ to the minimum supported by java
18 so that the integration tests pass (It is unknown why the java
version is 18.9 instead of 11)
- Moves `isWithinVersionRange` to version.dart, and tests. 
- Adds FakeAndroidStudio to fakes to be used in multiple tests but does
not remove existing copies.

Metrics will be included as part of the definition of done for this bug
but not as part of this cl. It is already too big.

Known work still left in this pr: 
* Understand why analyze integration tests are failing. 


Example output if Java and gradle are not compatible: 
```
┌───────────────────────────────────────────────────────────────────┐
│ General Info                                                      │
│ [✓] App Name: espresso_example                                    │
│ [✓] Supported Platforms: android                                  │
│ [✓] Is Flutter Package: yes                                       │
│ [✓] Uses Material Design: yes                                     │
│ [✓] Is Plugin: no                                                 │
│ [✗] Java/Gradle/Android Gradle Plugin:                            │
│                                                                   │
│ Incompatible Java/Gradle versions.                                │
│                                                                   │
│ Java Version: 17.0.6, Gradle Version: 7.0.2                       │
│                                                                   │
│ See the link below for more information.                          │
│ https://docs.gradle.org/current/userguide/compatibility.html#java │
│                                                                   │
└───────────────────────────────────────────────────────────────────┘
```
Example output if Gradle and AGP are not compatible
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ General Info                                                                │
│ [✓] App Name: espresso_example                                              │
│ [✓] Supported Platforms: android                                            │
│ [✓] Is Flutter Package: yes                                                 │
│ [✓] Uses Material Design: yes                                               │
│ [✓] Is Plugin: no                                                           │
│ [✗] Java/Gradle/Android Gradle Plugin: Incompatible Gradle/AGP versions.    │
│                                                                             │
│ Gradle Version: 7.0.2, AGP Version: 7.4.2                                   │
│                                                                             │
│ Update gradle to at least "7.5".                                            │
│ See the link below for more information:                                    │
│ https://developer.android.com/studio/releases/gradle-plugin#updating-gradle │
│                                                                             │
│ Incompatible Java/Gradle versions.                                          │
│                                                                             │
│ Java Version: 17.0.6, Gradle Version: 7.0.2                                 │
│                                                                             │
│ See the link below for more information:                                    │
│ https://docs.gradle.org/current/userguide/compatibility.html#java           │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘
```
Example output if Java/Gradle/Agp are not compatible. 
```

┌─────────────────────────────────────────────────────────────────────────────┐
│ General Info                                                                │
│ [✓] App Name: espresso_example                                              │
│ [✓] Supported Platforms: android                                            │
│ [✓] Is Flutter Package: yes                                                 │
│ [✓] Uses Material Design: yes                                               │
│ [✓] Is Plugin: no                                                           │
│ [✗] Java/Gradle/Android Gradle Plugin: Incompatible Gradle/AGP versions.    │
│                                                                             │
│ Gradle Version: 7.0.2, AGP Version: 7.4.2                                   │
│                                                                             │
│ Update gradle to at least "7.5".                                            │
│ See the link below for more information:                                    │
│ https://developer.android.com/studio/releases/gradle-plugin#updating-gradle │
│                                                                             │
│ Incompatible Java/Gradle versions.                                          │
│                                                                             │
│ Java Version: 17.0.6, Gradle Version: 7.0.2                                 │
│                                                                             │
│ See the link below for more information:                                    │
│ https://docs.gradle.org/current/userguide/compatibility.html#java           │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘
```

Commit messages
- Add function to gradle_utils.dart that gets the gradle version from
wrapper or system and add a test for each situation
- Add method to get agp version, add method to validate agp against
gradle version, update documentation, add tests for agp validation.
- Update dart doc for validateGradleAndAgp to describe where the info
came from and corner case behavior, create function to validate java and
gradle and hardcode return to false
- Fill out and test java gradle compatibility function in gradle_utils
- Hook up java gradle evaluateion to hasValidJavaGradleAgpVersions with
hardcoded java version
- Add java --version output parsing and tests
- Add getJavaBinary test
- Update comment in android_sdk for mac behavior with java_home -v

## Pre-launch Checklist

- [x] I read the [Contributor Guide] and followed the process outlined
there for submitting PRs.
- [x] I read the [Tree Hygiene] wiki page, which explains my
responsibilities.
- [x] I read and followed the [Flutter Style Guide], including [Features
we expect every widget to implement].
- [x] I signed the [CLA].
- [x] I listed at least one issue that this PR fixes in the description
above.
- [x] I updated/added relevant documentation (doc comments with `///`).
- [x] I added new tests to check the change I am making, or this PR is
[test-exempt].
- [ ] All existing and new tests are passing.
2023-04-05 14:36:05 -04:00
Navaron Bracke
57171a3fef
[flutter_tools] Add namespace getter in Android project; use namespace as fallback (#121416)
[flutter_tools] Add namespace getter in Android project; use namespace as fallback
2023-03-09 22:19:04 +00:00
Lioness100
26b6c1bedd
Fix typos (#121171)
* Fix typos

* lowercase animated & opacity

* Undo typo fix

---------

Co-authored-by: Michael Goderbauer <goderbauer@google.com>
2023-02-23 19:43:21 +00:00
Michael Goderbauer
38630b6bd1
Remove unnecessary null checks in flutter_tool (#118857)
* dart fix --apply

* manual fixes

* fix after merge conflicts

* review
2023-01-23 21:43:08 +00:00
Alex Wallen
92d8b04bac
[macOS] Flavors project throws no flavor specified for creating a project. (#113979) 2022-10-25 19:50:50 +00:00
Gary Qian
762c92ead9
Remove doc for --ignore-deprecation and check for pubspec before v1 embedding check (#108523) 2022-07-28 20:48:05 -07:00
Christopher Fujino
cadb264d26
[flutter_tools] Catch more general XmlException rather than XmlParserException (#107574) 2022-07-13 22:38:07 +00:00
Anurag Roy
e6f69add99
[flutter_tools] Replace android v2 embedding broken doc link (#107456) 2022-07-12 20:31:07 +00:00
David Iglesias
c4aaa394ac
[tool][web] Create an early web plugin_registrant for dartpad. (#106921) 2022-07-02 00:51:06 +00:00
David Iglesias
1af8cc1183
[tools][web] Make Plugin Registrant file ephemeral. (#102185) 2022-05-11 17:54:11 -07:00
Jonah Williams
944fcda67f
[flutter_tools] remove UWP tooling (#102174) 2022-04-26 11:19:07 -07:00
Emmanuel Garcia
b528310f58
Specify Kotlin version in modules and refactor (#101315) 2022-04-07 13:20:33 -07:00
Emmanuel Garcia
5c6918933e
Migrate AGP and Gradle versions to 7.1.2/7.4 (#99723) 2022-03-30 20:30:09 -07:00
gaaclarke
912873baa7
Relands "Starts using the --source flag to compile the dart registrant. (#98046)" (#100572) 2022-03-28 18:15:10 -07:00
gaaclarke
97258979df
Revert "Starts using the --source flag to compile the dart registrant. (#98046) (#100493) 2022-03-21 13:40:23 -07:00
Gary Qian
63ff7a199b
MigrateConfig and migrate integration testing base (#99092) 2022-03-16 11:10:22 -07:00
gaaclarke
fdcd14464c
Starts using the --source flag to compile the dart registrant. (#98046)
* Starts using the `--source` flag to compile the dart registrant.

* updated general.shard tests

* Fixed the resident compiler flow

* added integration test

* made the integration test self contained

* renamed generated_main to dart_plugin_registrant

* cleaned up for review

* added task runner for ci

* added bringup and TESTOWNERS

* updated failure message
2022-03-01 16:24:47 -08:00
bannzai
0ee8e0e6fe
Fix typo FutterApplication -> FlutterApplication (#97897) 2022-02-08 10:25:57 -08:00
stuartmorgan
2dd8cb1ca2
Don't use example folder as a project type signal (#97157)
The code to generate platform files used to use the presence of an
'example' folder to determine whether or not a project was a plugin (in
which case that generation is bypassed). Later, robust detection was
added based on the pubspec.yaml `plugin` key, but the old check was left
in place. This creates false positives where people who add an example
folder to their app project start getting mysterious failures.

Since the pubspec check is definitive, there's no reason to continue to
use the presence of `example` as an indicator at all.

Fixes https://github.com/flutter/flutter/issues/87007
2022-01-24 19:28:38 -08:00
Jenn Magder
0287449c14
Do not show v1 Android embedding message for non-Android commands (#96148) 2022-01-05 12:55:10 -08:00
Emmanuel Garcia
935d1478aa
Apply the Kotlin plugin in a java project (#95225) 2021-12-14 23:04:05 -08:00
Gary Qian
da4e997ed3
Short circuit v1 deprecation warning on plugin projects (#94769) 2021-12-07 01:53:50 -08:00
Gary Qian
dd6a11b7aa
Add reason logging to v1 embedding warning message (#94636) 2021-12-06 14:21:58 -08:00
Gary Qian
02b1146cff
Reland "Exit on deprecated v1 embedding when trying to run or build" (#92901) (#93566) 2021-11-12 15:52:32 -08:00
Yegor
24b9346c9b
Revert "Reland "Exit on deprecated v1 embedding when trying to run or build (#92901)" (#93386)" (#93518)
This reverts commit eabb7cbc34.

It broke multiple tests.
2021-11-11 16:45:40 -08:00
Gary Qian
eabb7cbc34
Reland "Exit on deprecated v1 embedding when trying to run or build (#92901)" (#93386) 2021-11-11 14:49:35 -08:00
Greg Spencer
52ae102f18
Adds tool warning log level and command line options to fail on warning/error output (#92031) 2021-11-10 16:13:04 -08:00
Zachary Anderson
858a328712
Revert "Exit on deprecated v1 embedding when trying to run or build (#92901)" (#93365)
This reverts commit 6153bbef3e.
2021-11-09 22:22:14 -08:00
Gary Qian
6153bbef3e
Exit on deprecated v1 embedding when trying to run or build (#92901) 2021-11-09 17:38:03 -08:00
Jenn Magder
9e88fe328e
Remove globals_null_migrated.dart, move into globals.dart (#92861) 2021-11-01 17:18:03 -07:00
Ian Hickson
61a0add286
Enable avoid_redundant_argument_values lint (#91409) (#91462) 2021-10-08 09:25:14 -07:00
Zachary Anderson
b9d2177da0
Revert "Enable avoid_redundant_argument_values lint (#91409)" (#91461)
This reverts commit 5fd259be24.
2021-10-07 21:11:07 -07:00
Ian Hickson
5fd259be24
Enable avoid_redundant_argument_values lint (#91409) 2021-10-07 20:13:02 -07:00
Majid Hajian
6c10f19b80
add package_name for consistency across all platforms (#88457) 2021-10-07 17:08:02 -07:00
stuartmorgan
97fb8c0560
Fix Dart plugin registrant interaction with 'flutter test' (#90288)
Building an application for a desktop platform that transitively included any Dart-based plugins (such as path_provider) broke `flutter test`, because its compilation was overriding the provided main (in this case, the test main) with `generated_main.dart` if it was present. This PR:
- Changes the `flutter test` compilation path to update `generated_main.dart`, so that the tests will work, and will include any registered Dart plugins.
- Makes using `generated_main.dart` during recompile opt-in, to try to reduce the chance of a similar bug happening with other codepaths in the future.

Fixes https://github.com/flutter/flutter/issues/88794
2021-09-30 20:25:13 -07:00
Jenn Magder
e6535f6da1
Changed tool cached properties to late finals (#88923) 2021-08-26 14:01:05 -07:00
Jenn Magder
e028d0f046
Split project.dart into CMake and Xcode projects (#85359) 2021-06-28 11:31:04 -07:00
Jenn Magder
0de6bd41ba
Migrate iOS app deployment target from 8.0 to 9.0 (#85174) 2021-06-24 10:21:05 -07:00
Mirko Mucaria
bce1706f1c
Fix watchOS build when companion app is configured with xcode variable (#84519) 2021-06-17 14:14:03 -07:00
Jenn Magder
c4a2a3e92d
Migrate project.dart and all dependencies to null safety (#83817) 2021-06-02 18:41:12 -07:00
Jenn Magder
b947121f00
Clean up null assumptions for project.dart dependencies (#83445) 2021-06-01 13:14:03 -07:00
Jenn Magder
ea21938ccc
Remove symroot from generated iOS Xcode build settings (#82576) 2021-05-14 17:09:04 -07:00
Chris Bracken
53c2f7086b
[flutter_tools] support flutter run -d winuwp (#82373)
Allow flutter run to work end-to-end with a UWP device.

Uses win32/ffi for the actual launch of the application, injected via
the native API class. This is structured to avoid a g3 dependency.

Install and amuid require powershell scripts for now.

Actually connecting to the observatory requires running a command in an
elevated prompt. Instructions are presented to the user if a terminal is
attached.

This is a rebased version of https://github.com/flutter/flutter/pull/79684
by @jonahwilliams, updated to remove `NativeApi` and replace is with calls
to `uwptool`.

Part of https://github.com/flutter/flutter/issues/82085
2021-05-12 20:45:30 -07:00
Jenn Magder
db3f49b1b4
Use cached Xcode build settings during iOS build (#80904) 2021-04-27 17:20:11 -07:00
Jenn Magder
15c591a15f
Split out XcodeProjectInterpreter from xcode_build_settings (#80399) 2021-04-14 16:51:10 -07:00