Commit Graph

136 Commits

Author SHA1 Message Date
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
Alex Li
3d94b8fd1d
[tool] Install the corresponding APK in flutter run (#113622) 2022-10-19 02:44:30 +00:00
godofredoc
4fa91c949a
Revert "[tool] ️ Install the corresponding APK in flutter run (#112768)" (#113614)
This reverts commit 0ad71e8727.
2022-10-18 10:04:49 -07:00
Alex Li
0ad71e8727
[tool] ️ Install the corresponding APK in flutter run (#112768) 2022-10-18 02:06:30 +00:00
林军华
8e30cc9c56
Revert file naming convention of .aar files to support fuzzy matching in build.gradle (#112149) 2022-10-04 03:37:22 +00:00
Gary Qian
7cfbdadc33
Reland "Upgrade Gradle and AGP versions to 7.5/7.2 and migrate benchmarks+examples" #108472 (#108510) 2022-07-28 19:38:07 -07:00
Kate Lovett
716533925b
Revert "Reland "Upgrade Gradle and AGP versions to 7.5/7.2 and migrate benchmarks+examples" #108355 (#108472)" (#108488)
This reverts commit 1f8c490c82.
2022-07-27 17:20:20 -05:00
Gary Qian
1f8c490c82
Reland "Upgrade Gradle and AGP versions to 7.5/7.2 and migrate benchmarks+examples" #108355 (#108472) 2022-07-27 14:23:09 -07:00
Zachary Anderson
1e69683688
Revert "Reland "Upgrade Gradle and AGP versions to 7.5/7.2 and migrate benchmarks+examples" (#108355)" (#108407)
This reverts commit c4b3625d62.
2022-07-26 19:30:28 -07:00
Gary Qian
c4b3625d62
Reland "Upgrade Gradle and AGP versions to 7.5/7.2 and migrate benchmarks+examples" (#108355) 2022-07-26 16:23:08 -07:00
Zachary Anderson
d155bc1bad
Revert "Upgrade Gradle and AGP versions to 7.5/7.2 and migrate examples/tests (#108197)" (#108349)
This reverts commit ca6cecf034.
2022-07-25 22:20:37 -07:00
Gary Qian
ca6cecf034
Upgrade Gradle and AGP versions to 7.5/7.2 and migrate examples/tests (#108197) 2022-07-25 15:23:08 -07:00
Jonah Williams
db829c1e20
[flutter_tools] migrate more unit tests to null safety (#106153) 2022-06-17 21:34:27 -07:00
Michael Goderbauer
3fa355c97d
Remove dead code in tools tests (#104567) 2022-05-25 12:48:17 -07:00
Elsabe Ros
606e91ad63
Use the maven-publish plugin to publish AAR files. (#101891) 2022-04-19 16:34:07 -07:00
Zachary Anderson
6190c5df09
Revert "Use the maven-publish plugin to publish AAR files. (#101276)" (#101827)
This reverts commit 2b0255f0d9.
2022-04-13 08:12:07 -07:00
Elsabe Ros
2b0255f0d9
Use the maven-publish plugin to publish AAR files. (#101276) 2022-04-12 22:19:08 -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
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
Zachary Anderson
5188df0821
Revert gradle roll (#91459)
* Revert "Mark last failing test after gradle update as flaky. (#91423)"

This reverts commit 46a52d03bd.

* Revert "fix android template for Gradle 7 (#91411)"

This reverts commit 51d06d537f.

* Revert "Add explicit version for mac and windows openjdk. (#91408)"

This reverts commit bf429f2771.

* Revert "Update the openjdk version used by linux android tests. (#91405)"

This reverts commit 2144ab8b45.

* Revert "Migrate to Gradle 7.0.2 / AGP 7.0.1 (#90642)"

This reverts commit b6459f9b63.
2021-10-07 19:42:24 -07:00
Taha Tesser
b6459f9b63
Migrate to Gradle 7.0.2 / AGP 7.0.1 (#90642) 2021-10-06 17:01:13 -07:00
Jonah Williams
fa0782b696
reassign jonahwilliams todos (#88707) 2021-08-23 12:27:07 -07:00
Darren Austin
b08366ce7b
Updated skipped tests for flutter_tools. (#87925)
* Updated skipped tests for flutter_tools.

* Turned the flaky overall_experience test off as it was still failing on CI.
2021-08-10 22:22:08 -07:00
Emmanuel Garcia
e7a9adeeab
Remove AndroidX workarounds (#86911) 2021-07-23 17:41:04 -07:00
Alexandre Ardhuin
80990c21e2
code formatting (#85783) 2021-07-07 23:06:05 -07:00
Jenn Magder
ba4177f6da
Find Android Studio installations with Spotlight query on macOS (#80475) 2021-04-28 19:09:03 -07:00
Jonah Williams
064eae8c38
[flutter_tools] remove mocks and fix fake imports (#81309) 2021-04-27 11:51:41 -07:00
Jenn Magder
56c0002c47
Adopt FakeProcessManager.empty (#80480) 2021-04-15 14:19:02 -07:00
Sam Rawlins
68492c5b69
Remove "unnecessary" imports. (#78664) 2021-04-06 11:19:02 -07:00
Jenn Magder
8ddc27e607
Split globals.dart into null sound and unsound libraries (#79016) 2021-03-31 16:55:20 -07:00
Jonah Williams
a01f37245b
[flutter_tools] remove globals from terminal (#77953) 2021-03-12 12:53:05 -08:00
Jonah Williams
945e0df104
[flutter_tools] remove several AndroidSdk Mocks (#77264) 2021-03-04 12:24:03 -08:00
Michael Goderbauer
7b251f5f37
Enable use_function_type_syntax_for_parameters lint (#77163) 2021-03-04 08:59:17 -08:00
Jonah Williams
b678d0adec
[flutter_tools] remove globals and mocks from android gradle builder and test (#76416) 2021-02-19 21:07:43 -08:00
Jenn Magder
62d8969203
Adopt Artifacts.test(localEngine:) in a few tests (#76354) 2021-02-18 19:31:03 -08:00
Jonah Williams
6b14558a68
[flutter_tools] remove global usage of flutterUsage from gradle (#76330) 2021-02-18 15:52:00 -08:00
Jonah Williams
04182572f7
[flutter_tools] allow bypassing context for FlutterProject creation, remove fromPath (#76258) 2021-02-18 12:36:04 -08:00
Jonah Williams
bfcb43d2fc
[flutter_tools] remove local engine from globals in gradle (#76277) 2021-02-18 11:30:44 -08:00
Jonah Williams
555721de24
[flutter_tools] remove mock process manager from gradle tests (#76252) 2021-02-17 17:00:12 -08:00
Jonah Williams
93e7d34dc4
[flutter_tools] Remove globals/mocks from GradleUtils (#76020) 2021-02-17 14:26:57 -08:00
Jonah Williams
65599e2825
[flutter_tools] use less path manipulation in the Android SDK (#75930) 2021-02-16 13:54:44 -08:00
Jonah Williams
dce8f71228
[flutter_tools] do not use context logger in gradle (#75940) 2021-02-12 17:38:52 -08:00
Jonah Williams
97a9f2ae93
[flutter_tools] move gradle helper methods into AndroidBuilder class body, split unit tests (#75931) 2021-02-12 14:24:13 -08:00
mx1up
cc95c972b7
properly pass on gradle exit code (#71484) (#71582) 2021-02-11 14:11:03 -08:00
Jonah Williams
021311ed8a
Revert "[flutter_tools] move process manager into tool (#75350)" (#75639)
This reverts commit 8b6baae44c.
2021-02-08 09:21:46 -08:00
Jonah Williams
8b6baae44c
[flutter_tools] move process manager into tool (#75350)
Our current top crasher is an unclear error when ProcessManager fails to resolve an executable path. To fix this, we'd like to being adjusting the process resolution logic and adding more instrumentation to track failures. In order to begin the process, the ProcessManager has been folded back into the flutter tool
2021-02-04 13:19:11 -08:00
Jonah Williams
44d5950d27
[flutter_tools] switch dart defines to base64 to avoid windows control characters (#75027)
= gets escaped into %3D which seems to be tripping up cmake on windows since % is a control character. Switch to base64 encoding, since this does not have % nor , in the output character set.

This change is not trivially cherry pickable, and isn't tested on windows aside from my local, manual tests due to the planned CI work not being complete yet.

Fixes #75017
Fixes #74705
2021-02-02 09:10:48 -08:00