Commit Graph

261 Commits

Author SHA1 Message Date
lsaudon
9be8f4fd58 Bump cupertino_icons to 1.0.6 (#136962)
Bump cupertino_icons to 1.0.6
2023-11-16 21:15:04 +00:00
Michael Goderbauer
571039f6ee Bump flutter_lints to 3.0 (#136841)
Follow-up to https://github.com/flutter/packages/pull/5177
2023-10-18 23:53:08 +00:00
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
David
80c7dd7245 Fix template app documentation (#131125)
The PR fixes template app documentation
2023-07-27 22:42:16 +00:00
Greg Spencer
2ecf4ae962 Update the counter app to enable Material 3 (#118835)
* Update the counter app to enable Material 3

* Fix tools tests

* Update some wording

* Revert all but useMaterial3

* Update comments
2023-02-02 00:08:11 +00:00
stuartmorgan
f1d157bc29 Add an integration test to plugin template example (#117062)
* Add an integration test to plugin template example

Dart unit tests don't exercise host-side plugin code at all, so the
example tests in the plugin template currently have very little
meaningful coverage. This adds an integration test to the example app
when creating a plugin, so that there's an example of how to actually
test that a complete round-trip plugin call works.

This is done as a separate template that's currently only used by the
plugin template because I don't know what a good example for a
non-plugin case would be that isn't largely just a duplicate of the
widget tests. However, the integration test pre-includes conditionals
around the parts that are plugin-specific so that it can more easily be
expanded to other use cases later (e.g., in
https://github.com/flutter/flutter/issues/68818).

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

* Add integration test to expected dependencies of a plugin app

* Test fixes

* Make an explicit test case
2022-12-15 19:49:14 +00:00
Daco Harkes
c37f255e8b [tools] Fix plugin_ffi template lint violation (#115356)
Closes: https://github.com/flutter/flutter/issues/115347
2022-11-15 11:50:49 +00:00
Greg Spencer
5259e1bc6d Add --empty to the flutter create command (#113873) 2022-10-24 21:20:03 +00:00
Kate Lovett
7e12b37111 Deprecate 2018 text theme parameters (#109817) 2022-08-22 20:00:34 +00: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
Jonah Williams
944fcda67f [flutter_tools] remove UWP tooling (#102174) 2022-04-26 11:19:07 -07:00
Michael Goderbauer
329ceaef66 Use super parameters in templates (#101157) 2022-04-14 13:26:38 -07:00
Ahmed Ashour
2268aebbae Remove the end period of a URL in project template (#99816) 2022-03-25 16:15:13 -07:00
Michael Goderbauer
8560d914eb Upgrade to flutter_lints 2.0 (#99881) 2022-03-22 11:00:23 -07:00
Jeff Ward
0aab22807c First pass at using platform abstraction for plugins (#92672) 2022-03-09 14:10:21 -08:00
Collin Jackson
10fbbafe09 [flutter_tools] Use proper project name in templates (#96373) 2022-02-02 06:50:14 -08:00
Daco Harkes
0e2f51dfd0 FFI plugins (#96225) 2022-01-26 23:44:45 +01:00
Zachary Anderson
65c6e88223 Revert "FFI plugins (#94101)" (#96122)
This reverts commit 5257f0290c.
2022-01-04 08:09:12 -08:00
Daco Harkes
5257f0290c FFI plugins (#94101)
* Building shared C source code as part of the native build for platforms Android, iOS, Linux desktop, MacOS desktop, and Windows desktop.
* Sample code doing a synchronous FFI call.
* Sample code doing a long running synchronous FFI call on a helper isolate.
* Use of `package:ffigen` to generate the bindings.
2022-01-04 10:14:27 +01:00
Ahmed Ashour
6bfc5824d3 Add .gitignore (#85017) 2021-07-09 10:41:03 -07:00
Filip Hracek
76d5e62f42 Add a more complete app template for Flutter (skeleton) (#83530) 2021-06-28 15:26: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
Aneesh Rao
b4148eb599 Add maskable icons to improve lighthouse score (#83182) 2021-06-10 13:49:06 -07:00
Yegor
e6cc3cd84d use old Edge-compatible JavaScript in index.html (#83732) 2021-06-01 20:45:58 -07:00
Balvinder Singh Gambhir
4a33813b35 [flutter_tools] added base-href command in web (#80519) 2021-05-19 12:39:02 -07:00
James Clarke
a34713fb96 Update Windows flutter create template (#82598) 2021-05-14 19:10:07 -07:00
Michael Goderbauer
7837d3eae1 Upgrade to stable flutter_lints 1.0.0 (#82365) 2021-05-12 17:14:03 -07:00
Michael Goderbauer
532a79c857 Integrate package:flutter_lints into templates (#81417) 2021-05-10 16:19:04 -07:00
stuartmorgan
27d1e5892f Minor cleanup to Linux application template format (#81561) 2021-05-07 09:49:03 -07:00
Matej Knopp
858123dced Remove RunLoop from Windows template (#79969) 2021-04-27 14:50:42 -07:00
Jonah Williams
d9638d25d7 migrate from jcenter to mavencentral (#80908) 2021-04-21 21:41:07 -07:00
Pierre-Louis
ee875af067 Add Android keystore files to project gitignore (#80663) 2021-04-19 20:34:03 -07:00
Emmanuel Garcia
42f21fd780 Standardize how Java8 is set in gradle files (#80600) 2021-04-19 20:19:03 -07:00
Michael Thomsen
2cdd51900c Enable null safety by default in templates (#78619) 2021-03-30 10:16:05 +02:00
Marcus Tomlinson
01c772cc8d Revert "Add libblkid / liblzma / libgcrypt as an explicit dependancy on Linux" (#78415)
* Revert "Add libgcrypt as an explicit dependancy on Linux"

This reverts commit bf65b3d03ccdc1dd21c09f34d600d72b0636a784.

* libblkid & liblzma not explicitly required either
2021-03-18 09:14:44 -07:00
Jonah Williams
2584afd7ec [flutter_tools] scaffolding for Windows UWP template (#78067) 2021-03-16 13:43:04 -07:00
Ahmed Saleh
740504d3e6 Refactor: use one subprojects property (#77942) 2021-03-12 16:28:03 -08:00
Marcus Tomlinson
82675474ea Add libgcrypt as an explicit dependancy on Linux (#77926) 2021-03-12 07:50:03 -08:00
Andre
3dca866f06 Fix typo in Windows template (#77405) 2021-03-05 14:09:04 -08:00
John Ryan
c5d1600843 Fix typo in web template (#77011) 2021-03-04 15:24:03 -08:00
Jenn Magder
d099ae60f0 Add ephemeral iOS directory to put future generated files (#76830) 2021-02-25 18:16:03 -08:00
Hidenori Matsubayashi
4cc0ab2d19 [flutter_tools] Add ARM64 Linux host and cross-building option support (#61221) 2021-02-12 14:25:30 -08:00
Yegor
e7953b3be4 [web] new service worker loading mechanism (#75535) 2021-02-11 09:16:21 -08:00
Robert Ancell
09adc359b8 Make Linux apps non-unique by default. (#74959)
This stops them attempting to own a D-Bus name, which may not be possible if the
app is sandboxed (e.g. in a Snap). It's also probably what most developers would
expect is the correct behaviour by default.
2021-02-02 11:34:40 +13:00
Michael Goderbauer
63267e9016 Make flutter create --smaple null-safe (#74844) 2021-01-27 14:44:03 -08:00
Niklas Schulze
afe790775b [flutter_tools] copy flutter_texture_registrar.h header on Windows (#61098) 2021-01-15 16:20:57 -05:00
Dan Field
6a32859eb9 Revert integration_test in flutter create template (#74068)
* Revert "Add integration_test template to create template (#70240)"

This reverts commit d047d108eb.

* test
2021-01-15 13:13:46 -08:00
Jenn Magder
45d71e25ab Build iOS apps using Swift Packages (#73508) 2021-01-07 15:59:09 -08:00
Jenn Magder
74d58105d1 Revert "Build iOS apps using Swift Packages (#72761)" (#73437)
This reverts commit 28db5a0fae.
2021-01-06 15:04:16 -08:00
Jenn Magder
28db5a0fae Build iOS apps using Swift Packages (#72761) 2021-01-06 13:54:53 -08:00