Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
dart_project.h
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef FLUTTER_SHELL_PLATFORM_WINDOWS_CLIENT_WRAPPER_INCLUDE_FLUTTER_DART_PROJECT_H_
6#define FLUTTER_SHELL_PLATFORM_WINDOWS_CLIENT_WRAPPER_INCLUDE_FLUTTER_DART_PROJECT_H_
7
8#include <string>
9#include <vector>
10
11namespace flutter {
12
13// Configures how the Flutter engine selects a GPU.
14enum class GpuPreference {
15 // No preference.
17 // Prefer energy efficiency over performance, such as an integrated GPU.
18 // This falls back to a high performance GPU if no low power GPU is
19 // available.
21 // Prefer performance over energy efficiency, such as a discrete GPU or
22 // dedicated GPU.
23 // This falls back to a low power GPU if no high performance GPU is available.
25};
26
27// Configures the thread policy for running the UI isolate.
28enum class UIThreadPolicy {
29 // Default value. Currently will run the UI isolate on separate thread,
30 // later will be changed to running the UI isolate on platform thread.
31 Default,
32 // Run the UI isolate on platform thread.
34 // Run the UI isolate on a separate thread.
36};
37
38// A set of Flutter and Dart assets used to initialize a Flutter engine.
40 public:
41 // Creates a DartProject from a series of absolute paths.
42 // The three paths are:
43 // - assets_path: Path to the assets directory as built by the Flutter tool.
44 // - icu_data_path: Path to the icudtl.dat file.
45 // - aot_library_path: Path to the AOT snapshot file.
46 //
47 // The paths may either be absolute or relative to the directory containing
48 // the running executable.
49 explicit DartProject(const std::wstring& assets_path,
50 const std::wstring& icu_data_path,
51 const std::wstring& aot_library_path) {
52 assets_path_ = assets_path;
53 icu_data_path_ = icu_data_path;
54 aot_library_path_ = aot_library_path;
55 }
56
57 // Creates a DartProject from a directory path. The directory should contain
58 // the following top-level items:
59 // - icudtl.dat (provided as a resource by the Flutter tool)
60 // - flutter_assets (as built by the Flutter tool)
61 // - app.so, for an AOT build (as built by the Flutter tool)
62 //
63 // The path can either be absolute, or relative to the directory containing
64 // the running executable.
65 explicit DartProject(const std::wstring& path) {
66 assets_path_ = path + L"\\flutter_assets";
67 icu_data_path_ = path + L"\\icudtl.dat";
68 aot_library_path_ = path + L"\\app.so";
69 }
70
71 ~DartProject() = default;
72
73 // Sets the Dart entrypoint to the specified value.
74 //
75 // If not set, the default entrypoint (main) is used. Custom Dart entrypoints
76 // must be decorated with `@pragma('vm:entry-point')`.
77 void set_dart_entrypoint(const std::string& entrypoint) {
78 if (entrypoint.empty()) {
79 return;
80 }
81 dart_entrypoint_ = entrypoint;
82 }
83
84 // Returns the Dart entrypoint.
85 const std::string& dart_entrypoint() const { return dart_entrypoint_; }
86
87 // Sets the command line arguments that should be passed to the Dart
88 // entrypoint.
89 void set_dart_entrypoint_arguments(std::vector<std::string> arguments) {
90 dart_entrypoint_arguments_ = std::move(arguments);
91 }
92
93 // Returns any command line arguments that should be passed to the Dart
94 // entrypoint.
95 const std::vector<std::string>& dart_entrypoint_arguments() const {
96 return dart_entrypoint_arguments_;
97 }
98
99 // Sets the GPU usage preference for flutter engine.
101 gpu_preference_ = gpu_preference;
102 }
103
104 // Returns the project's GPU preference.
105 // Defaults to NoPreference.
106 GpuPreference gpu_preference() const { return gpu_preference_; }
107
108 // Sets the thread policy for UI isolate.
110 ui_thread_policy_ = policy;
111 }
112
113 // Returns the policy for UI isolate.
114 // Defaults to UIThreadPolicy::Default.
115 UIThreadPolicy ui_thread_policy() const { return ui_thread_policy_; }
116
117 private:
118 // Accessors for internals are private, so that they can be changed if more
119 // flexible options for project structures are needed later without it
120 // being a breaking change. Provide access to internal classes that need
121 // them.
122 friend class FlutterEngine;
124 friend class DartProjectTest;
125
126 const std::wstring& assets_path() const { return assets_path_; }
127 const std::wstring& icu_data_path() const { return icu_data_path_; }
128 const std::wstring& aot_library_path() const { return aot_library_path_; }
129
130 // The path to the assets directory.
131 std::wstring assets_path_;
132 // The path to the ICU data.
133 std::wstring icu_data_path_;
134 // The path to the AOT library. This will always return a path, but non-AOT
135 // builds will not be expected to actually have a library at that path.
136 std::wstring aot_library_path_;
137 // The Dart entrypoint to launch.
138 std::string dart_entrypoint_;
139 // The list of arguments to pass through to the Dart entrypoint.
140 std::vector<std::string> dart_entrypoint_arguments_;
141 // The preference for GPU to be used by flutter engine.
143 // Thread policy for UI isolate.
144 UIThreadPolicy ui_thread_policy_ = UIThreadPolicy::Default;
145};
146
147} // namespace flutter
148
149#endif // FLUTTER_SHELL_PLATFORM_WINDOWS_CLIENT_WRAPPER_INCLUDE_FLUTTER_DART_PROJECT_H_
void set_dart_entrypoint(const std::string &entrypoint)
void set_ui_thread_policy(UIThreadPolicy policy)
void set_gpu_preference(GpuPreference gpu_preference)
DartProject(const std::wstring &assets_path, const std::wstring &icu_data_path, const std::wstring &aot_library_path)
const std::vector< std::string > & dart_entrypoint_arguments() const
const std::string & dart_entrypoint() const
DartProject(const std::wstring &path)
void set_dart_entrypoint_arguments(std::vector< std::string > arguments)
UIThreadPolicy ui_thread_policy() const
GpuPreference gpu_preference() const
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
Definition switch_defs.h:52
it will be possible to load the file into Perfetto s trace viewer use test Running tests that layout and measure text will not yield consistent results across various platforms Enabling this option will make font resolution default to the Ahem test font on all disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network policy