177 Commits

Author SHA1 Message Date
Christopher Fujino
8a31a3a284
Flutter preview device (#135639)
Fixes https://github.com/flutter/flutter/issues/130277

This PR does two things:

1. introduce a hidden `flutter build _preview` command, that will build a debug windows desktop app and copy it into the SDK's binary cache. This command is only intended to be run during packaging.
2. introduce a new device type, called `PreviewDevice`, which relies on the prebuilt desktop debug app from step 1, copies it into the target app's assets build folder, and then hot reloads their dart code into it.
2023-10-18 00:27:54 +00:00
Daco Harkes
ff4a0f676f
Native assets support for Windows (#134203)
Support for FFI calls with `@Native external` functions through Native assets on Windows. This enables bundling native code without any build-system boilerplate code.

For more info see:

* https://github.com/flutter/flutter/issues/129757

### Implementation details for Windows.

Mainly follows the design of https://github.com/flutter/flutter/pull/134031.

Specifically for Windows in this PR is the logic for finding the compiler `cl.exe` and environment variables that contain the paths to the Windows headers `vcvars.bat` based on `vswhere.exe`.
2023-09-27 12:22:58 +00:00
Michael Goderbauer
240825a555
Enable private field promotion for flutter_tools (#134474)
New feature in upcoming Dart 3.2. See https://github.com/dart-lang/language/issues/2020. Feature is enabled by bumping the min SDK version to 3.2.

Part of https://github.com/flutter/flutter/issues/134476.
2023-09-12 20:20:04 +00:00
Pierrick Bouvier
792e26df95
[Windows] Add target architecture to build path (#131843)
To implement windows-arm64 support, it is needed to add architecture as a subdirectory (https://github.com/flutter/flutter/issues/129805).

In short, when performing a flutter windows build, we have:
- Before: build/windows/runner/Release/gallery.exe
- After: build/windows/x64/runner/Release/gallery.exe

This convention follows what flutter linux build does.

Addresses: https://github.com/flutter/flutter/issues/129805
Addresses: https://github.com/flutter/flutter/issues/116196

Design doc: [flutter.dev/go/windows-arm64](https://flutter.dev/go/windows-arm64)
2023-08-31 09:09:02 -07:00
Matan Lurey
223ae5d3ac
Add support for LOCAL_ENGINE_HOST to Linux/Mac/Win builds. (#132579)
Partial work towards https://github.com/flutter/flutter/issues/132245.

I also couldn't help myself to do a very minor refactor and add some comments to `LocalEngineInfo` because I was getting confused myself implementing it.
2023-08-16 22:24:51 +00:00
Jay Mehta
efc9e16ea3
Fixed regex to show missing assets file error (#131160)
Added Regex to match error message from verbos build as suggested by @stuartmorgan [here](https://github.com/flutter/flutter/pull/98137#discussion_r810559589).
Modified Windows Build Test

Fixes #97065
2023-07-31 20:42:09 +00:00
Christopher Fujino
43afac1e29
Reduce usage of testUsingContext (#131078)
Part of https://github.com/flutter/flutter/issues/47161
2023-07-24 17:22:25 +00:00
Loïc Sharma
071ea49248
[Windows] Address feedback for show window comment (#127998)
Address Tong's feedback here: https://github.com/flutter/flutter/issues/127695#issuecomment-1564884872

Follow-up to: https://github.com/flutter/flutter/pull/127046
2023-05-31 23:42:54 +00:00
Loïc Sharma
ce61eda70c
[Windows] Ensure window is shown (#127046)
## Background

The Windows runner has a race at startup:

1. **Platform thread**: creates a hidden window
2. **Platform thread**: launches the Flutter engine
3. **UI/Raster threads**: renders the first frame
4. **Platform thread**: Registers a callback to show the window once the next frame has been rendered.

Steps 3 and 4 happen in parallel and it is possible for step 3 to complete before step 4 starts. In this scenario, the next frame callback is never called and the window is never shown.

As a result the `windows_startup_test`'s test, which [verifies that the "show window" callback is called](1f09a8662d/dev/integration_tests/windows_startup_test/windows/runner/flutter_window.cpp (L60-L64)), can flake if the first frame is rendered before the show window callback has been registered.

## Solution

This change makes the runner schedule a frame after it registers the next frame callback. If step 3 hasn't completed yet, this no-ops as a frame is already scheduled. If step 3 has already completed, a new frame will be rendered, which will call the next frame callback and show the window.

Part of https://github.com/flutter/flutter/issues/119415

See this thread for alternatives that were considered: https://github.com/flutter/engine/pull/42061#issuecomment-1550080722
2023-05-19 22:25:55 +00:00
Loïc Sharma
718f444bc3
[Windows] Improve version migration message (#127048)
This also migrates the platform channel example to stamp version information on Windows.
2023-05-17 23:07:16 +00:00
Loïc Sharma
f94112e50c
Clarify Visual Studio isn't strictly necessary for Windows development (#125837)
Update `flutter doctor` to clarify that Visual Studio is needed only if creating Windows apps. Windows users targeting Android do not need to install Visual Studio.
2023-05-02 19:46:59 +00:00
Kevin Moore
76e587bf78
flutter-tool: enum cleanup (#124760)
flutter-tool: enum cleanup
2023-04-14 01:55:05 +00:00
Loïc Sharma
9f2ac97174
[Windows] Add version info migration (#123414)
[Windows] Add version info migration
2023-03-29 20:11:18 +00:00
Loïc Sharma
2312097731
[Tool] [Windows] Output app path on build completion (#122928)
[Tool] [Windows] Output app path on build completion
2023-03-20 20:11:07 +00:00
Loïc Sharma
3635a3048e
Revert "[Tool] [Windows] Output app path on build completion (#122858)" (#122926)
Revert "[Tool] [Windows] Output app path on build completion"
2023-03-17 21:29:12 +00:00
Loïc Sharma
80d6c10596
[Tool] [Windows] Output app path on build completion (#122858)
[Tool] [Windows] Output app path on build completion
2023-03-17 20:53:40 +00:00
Tim Maffett
2e8c3468e7
fix devtool instructional messages after flutter build ... --analyze-size . Fixes #122229 (#122230)
fix devtool instructional messages after `flutter build ... --analyze-size `.  Fixes #122229
2023-03-09 22:29:50 +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
Loïc Sharma
ef854a3db0
[Tool] [Windows] Output build duration (#120311)
* [Tool][Windows] Output build duration

* Tweak

* Format
2023-02-08 23:24:42 +00:00
Chris Bracken
d272a3ab80
Reland: [macos] add flavor options to tool commands (#119564)
* Reland: [macos] add flavor options to tool commands

Adds --flavor option to flutter run and flutter build. Running against
preexisting devicelab flavor tests for feature parity between macOS,
iOS, and Android.

This relands #118421 by alex-wallen which was reverted in #118858 due to
the following test failures:

The bail-out with "Host and target are the same. Nothing to install."
added in `packages/flutter_tools/lib/src/commands/install.dart`
triggered failures in the following tests, which unconditionally attempt
to install the built app, which is unsupported on desktop since the
host and target are the same:

* https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8791495589540422465/+/u/run_flutter_view_macos__start_up/test_stdout
* https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8791496218824259121/+/u/run_complex_layout_win_desktop__start_up/test_stdout
* https://logs.chromium.org/logs/flutter/buildbucket/cr-buildbucket/8791496218165602641/+/u/run_flutter_gallery_win_desktop__start_up/test_stdout

Fixes #64088

* Partial revert: eliminate install check on desktop

The original flavour support patch included a check that triggered a
failure when flutter install is run on desktop OSes. This was
intentional, since the host and target devices are the same and
installation is unnecessary to launch the app on currently-supported
desktop OSes.

Note that Windows UWP apps *do* require installation to run, and we used
to have an install command for those apps, though UWP is no longer
supported.

Since that part of the change was orthogonal to flavour support itself,
I'm reverting that component of the change and we can deal with it
separately if so desired.
2023-01-31 17:37:46 +00:00
Elias Yishak
458b298f98
Refactoring to use ver command instead of systeminfo (#119304)
* refactoring to use `ver` command instead of `systeminfo`

* fix tests to match new approach

* adding another valid validator using brazil locale text

* refactor tests to use generic fake class `ver` arg + showing output from `ver` if unsuccessful

* update reason text in test

* fix reason text to be hard coded
2023-01-30 19:29:13 +00:00
Jenn Magder
030288d33b
Revert "[macos] add flavor options to commands in the flutter_tool (#118421)" (#118858)
This reverts commit 73096fd96ef53aacf47d8cfc606cc70126e88941.
2023-01-20 03:46:45 +00:00
Alex Wallen
73096fd96e
[macos] add flavor options to commands in the flutter_tool (#118421)
* Add new macos target configured for flavors

* Rename Free App copy-Info.plist to Free App Info.plist

* Remove bogus entitlements

* Remove Generated.xcconfig

* Audit project.pbxproj

* Remove unused configs

* share one info.plist

* Modify scheme so that paid app works

* Codesign automatic

* Pipe flavor as scheme into xcodebuild

* Ignore incoming flavor string

* pipe flavor for flutter run to work

* Add devicelab tests

* Error if host and target device are same for flutter install desktop

* Avoid bang (!) by promoting a local.

Co-authored-by: Jenn Magder <magder@google.com>

* Add supportsInstall property

* Override  in test classes

* Add install test on macOS

* Refactor application_package and add tests for package directory

Co-authored-by: a-wallen <stephenwallen@google.com>
Co-authored-by: Jenn Magder <magder@google.com>
2023-01-19 23:52:16 +00:00
hellohuanlin
0916375f44
[tools]Build IPA validation UI Polish (#116744)
* [tools]some ui polish for build ipa validation

* do not print out a few success validations

* rename installed type to success for more general usage

* forgot nit after reverting custom validation types and re-use doctor types
2022-12-15 14:43:32 -08:00
Jenn Magder
ada4460502
Audit covariant usage in tool (#116930) 2022-12-15 11:59:34 -08:00
Jason C.H
a8b36c7da4
Fix windows version validator under Chinese (#116282)
* Fix windows version validator under Chinese

* Update authors

* Update RegExp to reduce groups

* Add a trailing newline
2022-12-06 17:41:09 +00:00
Jackson Gardner
db1c3e208d
Platform binaries reland (#115502)
You can now specify a --local-web-sdk flag to point to a wasm_release folder. This will make it so that only artifacts that pertain to the web sdk are overridden to point to the wasm_release folder. Other artifacts (such as impellerc) will pull from the cache, or from the --local-engine path if that is specified.

This also uses precompiled platform kernel files for both ddc and dart2js
2022-12-02 14:13:40 -08:00
Jonah Williams
8230ef5e85
Revert "[web] Add --local-web-sdk flag and use precompiled platform kernels for dart2js and ddc (#114639)" (#115242)
This reverts commit 0e9ee3679cf30a1022b1ed062019d4f7312cef92.
2022-11-13 20:23:26 +00:00
Jackson Gardner
0e9ee3679c
[web] Add --local-web-sdk flag and use precompiled platform kernels for dart2js and ddc (#114639)
* Dart2JS build step looks for compiled platform binaries.

* Use new locations of platform binaries.

* Added --local-web-sdk command line flag.

* Need to use the matching frontend server when doing ddc stuff.

* Update packages/flutter_tools/lib/src/test/web_test_compiler.dart

Co-authored-by: Mouad Debbar <mouad.debbar@gmail.com>

* Update packages/flutter_tools/lib/src/runner/flutter_command_runner.dart

Co-authored-by: Mouad Debbar <mouad.debbar@gmail.com>

* Formatting issues.

* Need to use URI format for platform dill.

* Fix resident runner tests.

* Fix analysis issue.

* Fix and add unit tests.

* Add some useful comments.

* Refine doc comments for flags.

Co-authored-by: Mouad Debbar <mouad.debbar@gmail.com>
2022-11-12 01:31:10 +00:00
Jenn Magder
b82cf76ff6
Return void from project migrate() (#112897) 2022-10-05 20:22:56 +00:00
Elias Yishak
66c306b452
Windows version check in doctor (#110013) 2022-09-08 14:30:19 +00:00
Jenn Magder
5f5d4802fe
Support single arch local engines for 'build macos-framework' and 'ios-framework' (#110564) 2022-08-30 17:44:14 +00:00
yaakovschectman
1e2be6ed54
Check for bad characters in path on Windows build (#107949)
* Check for bad characters in path on Windows build

* Doc comments

* Fix formatting

* Commenting/formatting

* Link to issue in comment

* Comments, formatting

* Global var rename
2022-07-20 14:05:13 -04:00
Loïc Sharma
dcbdff087b
Ignore invalid description property in vswhere.exe JSON output (#106836)
The `flutter doctor` command uses `vswhere.exe` to verify the Visual Studio installation. This `vswhere.exe` is known to encode its output incorrectly. This is problematic as the `description` property is localized, and in certain languages this results in invalid JSON due to the incorrect encoding.

This change introduces a fallback to our `vswhere.exe` output parsing logic: if parsing JSON fails, remove the `description` property and retry parsing the JSON.

This fix was also tested on the outputs provided here: https://github.com/flutter/flutter/issues/106601#issuecomment-1170138123

Addresses https://github.com/flutter/flutter/issues/106601
2022-06-30 16:15:20 -07:00
Loïc Sharma
6026eea9a4
[Windows] Flow version information to the build output (#106145)
Previously developers had to edit their `Runner.rc` file to update their executable's version information. Now, version information will automatically be set from `flutter build`'s arguments or the `pubspec.yaml` file for new projects. 

Addresses https://github.com/flutter/flutter/issues/73652
2022-06-27 10:45:56 -07:00
Loïc Sharma
c29a7a2d22
Ignore replacement characters from vswhere.exe output (#104284)
Flutter uses `vswhere.exe` to find Visual Studio installations and determine if they satisfy Flutter's requirements. However, `vswhere.exe`'s JSON output is known to contain bad UTF-8. This change ignores bad UTF-8 as long as they affect JSON properties that are either unused, or, used only for display purposes by Flutter.

Fixes: https://github.com/flutter/flutter/issues/102451
2022-05-24 13:30:37 -07:00
Loïc Sharma
52e19ef7ec
Refactor vswhere.exe integration (#104133)
`VisualStudio` calls `vswhere.exe` to find Visual Studio installations and determine if they satisfy Flutter's requirements. Previously, `VisualStudio` stored the JSON output from `vswhere.exe` as `Map`s, resulting in duplicated logic to read the JSON output (once to validate values, second to expose values). Also, `VisualStudio` stored two copies of the JSON output (the latest valid installation as well as the latest VS installation).

This change simplifies `VisualStudio` by introducing a new `VswhereDetails`. This type contains the logic to read `vswhere.exe`'s JSON output, and, understand whether an installation is usable by Flutter. In the future, this `VswhereDetails` type will be used to make Flutter doctor resilient to bad UTF-8 output from `vswhere.exe`.

Part of https://github.com/flutter/flutter/issues/102451.
2022-05-20 10:12:25 -07:00
Lau Ching Jun
a633f3df32
Add ability for PrebuiltWindowsApp to accept a zip archive. (#103918) 2022-05-17 11:27:11 -07:00
Alexandre Ardhuin
07f1c20474
add missing trailing commas in list/set/map literals (#102585) 2022-04-27 09:15:35 +02:00
Jonah Williams
944fcda67f
[flutter_tools] remove UWP tooling (#102174) 2022-04-26 11:19:07 -07:00
stuartmorgan
80660b2d5e
Work around VS CMake generation bug (#98945) 2022-02-26 11:56:22 -08:00
Chris Bracken
20ff180ae8
Update Flutter desktop doc URL in error message (#96559)
When desktop support is not present in an existing project, certain
flutter tool commands raise an error that direct the user to
documentation on how to add desktop support to an existing Flutter
project. In a recent revamp of the webside, the URL was very slightly
changed (flutter.dev -> docs.flutter.dev).

This updates the error message to output the new URL.

Issue: https://github.com/flutter/flutter/issues/94398
2022-01-12 18:21:05 -08:00
stuartmorgan
7e05d103e9
Add support for Visual Studio 2022 (#93426) 2021-11-10 16:43:02 -08:00
Jenn Magder
6cbed01db3
Migrate windows_device to null safety (#92956) 2021-11-07 01:27:34 -07:00
Jenn Magder
9e88fe328e
Remove globals_null_migrated.dart, move into globals.dart (#92861) 2021-11-01 17:18:03 -07:00
嘟囔
c0e0f4f82e
feat: migrate install_manifest.dart to null-safety (#92062) 2021-10-21 21:26:36 -07:00
Chris Yang
42eb903200
[flutter_tools] iOS: display name defaults to the Title Case of flutter project name. (#91529) 2021-10-20 10:33:02 -07:00
Ian Hickson
989f864497
Enable avoid_setters_without_getters (#91067) 2021-10-01 00:58:05 -07:00
Chris Bracken
1c36271b05
Reduce required Windows CMake version to 3.14 (#89390)
When we landed the CMake minimum requirement constraint for Visual
Studio 2019, we landed it with minimum version 3.15, since that's what
was shipping with the current version of VS 2019 at the time. Looking at
the release notes of earlier versions, it's clear that earlier versions
of Visual Studio 2019 shipped with version 3.14. See:
https://devblogs.microsoft.com/cppblog/visual-studio-cmake-support-clang-llvm-cmake-3-14-vcpkg-and-performance-improvements/

Looking at release notes for CMake 3.15, there are no features/fixes
introduced in that version that we are dependent on.
https://cmake.org/cmake/help/latest/release/3.15.html

Issue: https://github.com/flutter/flutter/issues/88589
2021-09-03 21:05:58 -07:00
Jenn Magder
e6535f6da1
Changed tool cached properties to late finals (#88923) 2021-08-26 14:01:05 -07:00