Skip to content

Custom device types as a solution for custom embedder support for flutter run #65067

@jonahwilliams

Description

@jonahwilliams

See also: #56404

A new command: flutter add-custom-device --path-to-start-script=/?/ which takes a path to some executable (not the bundled asset itself). This is used to register some specific information in the persistent tool state. This would require some intermediary tooling. For example, it could not just consume go for the go desktop embedder or cargo for the rust embedder. The custom device would be treated as a non-ephemeral device, and always present.

The expectations of this custom script are that it can be passed flutter run launch arguments in a to-be-determined format: build mode, target file, et cetera. That custom script can then reentrantly call into flutter assemble to perform the actual build, or return a non-zero exit code and print stderr if that config is not supported. The embedder must build with the same version of Flutter & Dart that the SDK is currently using.

To support discovery of the VM Service instance, whatever the executable is will need to forward a VM service URI over stdout, similar to the desktop devices.

This proposal is currently looking for potential customers (owners of custom embedders) to determine whether it is feasible. The advantage of this approach is that it enables features like full IDE support, and allows custom embedders to delegate more of the tooling to the existing flutter tool.

fyi @Hixie

Metadata

Metadata

Assignees

Labels

P3Issues that are less important to the Flutter projectc: new featureNothing broken; request for a new capabilitytoolAffects the "flutter" command-line tool. See also t: labels.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions