77 Commits

Author SHA1 Message Date
Daco Harkes
aa36db1d29
Native assets support for MacOS and iOS (#130494)
Support for FFI calls with `@Native external` functions through Native assets on MacOS and iOS. 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 MacOS and iOS.

Dylibs are bundled by (1) making them fat binaries if multiple architectures are targeted, (2) code signing these, and (3) copying them to the frameworks folder. These steps are done manual rather than via CocoaPods. CocoaPods would have done the same steps, but (a) needs the dylibs to be there before the `xcodebuild` invocation (we could trick it, by having a minimal dylib in the place and replace it during the build process, that works), and (b) can't deal with having no dylibs to be bundled (we'd have to bundle a dummy dylib or include some dummy C code in the build file).

The dylibs are build as a new target inside flutter assemble, as that is the moment we know what build-mode and architecture to target.

The mapping from asset id to dylib-path is passed in to every kernel compilation path. The interesting case is hot-restart where the initial kernel file is compiled by the "inner" flutter assemble, while after hot restart the "outer" flutter run compiled kernel file is pushed to the device. Both kernel files need to contain the mapping. The "inner" flutter assemble gets its mapping from the NativeAssets target which builds the native assets. The "outer" flutter run get its mapping from a dry-run invocation. Since this hot restart can be used for multiple target devices (`flutter run -d all`) it contains the mapping for all known targets.

### Example vs template

The PR includes a new template that uses the new native assets in a package and has an app importing that. Separate discussion in: https://github.com/flutter/flutter/issues/131209.

### Tests

This PR adds new tests to cover the various use cases.

* dev/devicelab/bin/tasks/native_assets_ios.dart
  * Runs an example app with native assets in all build modes, doing hot reload and hot restart in debug mode.
* dev/devicelab/bin/tasks/native_assets_ios_simulator.dart
  * Runs an example app with native assets, doing hot reload and hot restart.
* packages/flutter_tools/test/integration.shard/native_assets_test.dart
  * Runs (incl hot reload/hot restart), builds, builds frameworks for iOS, MacOS and flutter-tester.
* packages/flutter_tools/test/general.shard/build_system/targets/native_assets_test.dart
  * Unit tests the new Target in the backend.
* packages/flutter_tools/test/general.shard/ios/native_assets_test.dart
* packages/flutter_tools/test/general.shard/macos/native_assets_test.dart
  * Unit tests the native assets being packaged on a iOS/MacOS build.

It also extends various existing tests:

* dev/devicelab/bin/tasks/module_test_ios.dart
   * Exercises the add2app scenario.
* packages/flutter_tools/test/general.shard/features_test.dart
   * Unit test the new feature flag.
2023-09-10 08:07:13 +00:00
Ian Hickson
487bd69078
Support disabling animations in the CLI (#132239) 2023-08-23 03:35:22 +00:00
Ian Hickson
a2e2574941
Remove the fast reassemble / single widget reload feature (#132255)
Fixes https://github.com/flutter/flutter/issues/132157
2023-08-10 21:48:06 +00:00
Michael Thomsen
dc481b23d1
Cleanup flutter config output (#122384) 2023-04-21 16:45:43 +02:00
Kevin Moore
a8cc95e36d
flutter_tool: only enable wasm compile in master channel (#121755)
flutter_tool: only enable wasm compile in master channel
2023-03-02 22:21:50 +00:00
Kevin Moore
14b3f740c7
flutter_tool: DRY up features that are fully enabled (#121754)
flutter_tool: DRY up features that are fully enabled
2023-03-02 01:14:48 +00:00
Zachary Anderson
bd6b5cef95
[flutter_tools] Enable custom devices on all channels (#109953) 2022-08-21 12:16:53 -07:00
Christopher Fujino
9d59532a7b
[flutter_tools] update feature defaults (#102937) 2022-05-02 15:14:09 -07:00
Tim Sneath
e4bd552e59
Update features.dart (#102766) 2022-04-28 16:34:08 -07:00
Jonah Williams
944fcda67f
[flutter_tools] remove UWP tooling (#102174) 2022-04-26 11:19:07 -07:00
Chris Bracken
1a072f9aee
[winuwp] Add removal warning in config help text (#101086) 2022-03-31 09:30:04 -07:00
Chris Bracken
bd6beb4ed7
[Linux] Update doctor wording for Linux (#99700)
Removes the beta-quality wording for Linux from messages in the tool.

Issue: https://github.com/flutter/flutter/issues/99697
2022-03-28 15:45:27 -07:00
Chris Bracken
b6bf325d0a
[macOS] Update doctor wording for macOS (#99699)
Removes the beta-quality wording for macOS from messages in the tool.

Issue: https://github.com/flutter/flutter/issues/98680
2022-03-28 15:44:28 -07:00
Christopher Fujino
4b2e828924
[flutter_tools] deprecate the dev branch from the feature system (#98689) 2022-02-18 16:24:22 -08:00
Tim Sneath
5c7ca2e738
Remove "beta-quality" for Windows (#98614) 2022-02-17 16:44:23 -08:00
Christopher Fujino
da88baffd7
[flutter_tools] remove dummy implementation from abstract class .isEnabled() (#96888) 2022-01-28 16:40:12 -08: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 5fd259be244244e14ff87fee9b6a721625f952cd.
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
Jonah Williams
67a57eb9a5
[flutter_tools] remove feature for alternative invalidation strategy (#84366) 2021-06-10 11:59:04 -07:00
Anis Alibegić
c99ed373b3
Fixed large amount of spelling errors (#83744) 2021-06-02 10:14:06 -07:00
Jonah Williams
666675078c
[flutter_tools] adjust some feature settings (#82851) 2021-05-18 20:49:03 -07:00
Jenn Magder
e4ad46c830
Remove flutterNext (#79989) 2021-04-07 22:20:42 -07:00
Jonah Williams
96a4dcb2b5
[flutter_tools] split features into 2 libraries, migrate to null safety (#79603) 2021-04-02 12:03:20 -07:00
Hannes Winkler
e8ad03099f
[flutter_tools] Add support for custom devices (#78113) 2021-03-31 18:09:02 -07:00
Jonah Williams
2584afd7ec
[flutter_tools] scaffolding for Windows UWP template (#78067) 2021-03-16 13:43:04 -07:00
Jonah Williams
acda272cf2
[flutter_tools] add tool feature/scaffold for UWP (#77399) 2021-03-08 08:09:04 -08:00
Jonah Williams
8974cef1d9
[flutter_tools] enable experimental invaldation everywhere (#76618) 2021-02-24 08:16:02 -08:00
Jonah Williams
74bd7b6f6d
[flutter_tools] opt all flutter tool libraries and tests out of null safety. (#74832)
* opt out the flutter tool

* oops EOF

* fix import

* Update tool_backend.dart

* Update daemon_client.dart

* fix more
2021-01-27 15:17:53 -08:00
Jonah Williams
c2cd4ef35c
[flutter_tools] ensure unstable compiler features are not available on stable (#74526) 2021-01-22 18:11:59 -08:00
Jonah Williams
1d3f697160
[flutter_tools] flag flip (#74444) 2021-01-22 09:29:57 -08:00
stuartmorgan
5aa6cba31d
Adjust desktop feature flag (#74348)
Prep to make https://github.com/flutter/flutter/issues/73857 easier in the future.
2021-01-20 19:22:08 -08:00
Jonah Williams
1816778529
[flutter_tools] wire up alternative invalidation strategy to features (#71439) 2020-12-01 09:54:23 -08:00
Jonah Williams
1c4791e604
[flutter_tools] update some web configuration defaults (#71433) 2020-12-01 09:53:35 -08:00
Jonah Williams
974661924b
[flutter_tools] disable SWR optimization on dev (#70912) 2020-11-20 16:27:21 -08:00
Jonah Williams
7086a2f43b
Revert "[flutter_tools] wire up alternative invalidation strategy to features (#70865)" (#70884)
This reverts commit ef4741540bb52b4ccc20ada8db7410557ae5b53c.
2020-11-19 14:01:39 -08:00
Jonah Williams
ef4741540b
[flutter_tools] wire up alternative invalidation strategy to features (#70865) 2020-11-19 13:13:51 -08:00
Jonah Williams
9618788e28
[flutter_tools] remove globals from features (#70515) 2020-11-16 15:00:37 -08:00
Jonah Williams
0f90747bb3
[flutter_tool] enable single widget reload optimization by default on dev (#66995)
Continued gradual rollout - dev is not that much riskier than master but will give much more data
2020-09-30 15:10:51 -07:00
Jonah Williams
6642d8f16a
[flutter_tools] enable single widget reload optimization by default on master (#66507)
This should be a mostly non breaking change for hot reload workflows that improves performance, but if you see anything odd with hot reload behavior on master please file a bug. This feature can also be disabled without any changes to the SDK with flutter config --no-single-widget-reload-optimization
2020-09-23 17:26:58 -07:00
Jonah Williams
a19f5baccc
[flutter_tools] connect widget cache from frontend_server (#65951) 2020-09-19 11:02:04 -07:00
Jonah Williams
bc11c2a8c4
[flutter_tools] update windows config feature (#65867) 2020-09-17 15:24:52 -07:00
Jonah Williams
8be1c9ef25
[flutter_tools] turn off fuchsia support by default (#61634) 2020-07-21 02:26:04 -07:00
Jonah Williams
859fce9010
[flutter_tools] add feature for iOS, android, and fuchsia (#61481)
Add feature flags for android, ios, and fuchsia (on by default). After updating the g3 rollers, the fuchsia feature will be turned off by default. Creates a simpler base type of feature flags for g3 to extend.

Updates android, ios, fuchsia workflows to use feature flags check.
Removes concept of stable artifacts and checks on flutter version.

Fixes #58999
#52859
#12768
2020-07-16 09:51:59 -07:00
Jonah Williams
d22d65c6e7
[flutter_tools] add the feature for single widget reloads (#61411)
Implements the flutter config feature for #61407 , but does not implement any of the functionality.
2020-07-14 12:24:58 -07:00
xster
8bd2e6585b
Remove v1 Android create templates (#61203) 2020-07-11 12:15:19 -07:00
Jonah Williams
8e9b78728f
[flutter_tools] switch linux desktop feature on (#60018)
Enable linux desktop feature on dev channel
2020-06-22 17:04:01 -07:00
Jonah Williams
18f38cd45b
Switch flutter_tools to use frontend_server for web compilation (#50365) 2020-02-11 15:43:46 -08:00
Jenn Magder
7f715628b0 Replace FlutterVersion.instance with FlutterVersion context fetch in global.dart (#49462) 2020-01-27 17:38:01 -08:00
Jonah Williams
ee7a37f1d3
[flutter_tools] Ensure that global variables are easily identifiable (#47398) 2020-01-06 11:04:20 -08:00