Flutter Engine
 
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};
22
23// Configures the thread policy for running the UI isolate.
24enum class UIThreadPolicy {
25 // Default value. Currently will run the UI isolate on separate thread,
26 // later will be changed to running the UI isolate on platform thread.
27 Default,
28 // Run the UI isolate on platform thread.
30 // Run the UI isolate on a separate thread.
32};
33
34// A set of Flutter and Dart assets used to initialize a Flutter engine.
36 public:
37 // Creates a DartProject from a series of absolute paths.
38 // The three paths are:
39 // - assets_path: Path to the assets directory as built by the Flutter tool.
40 // - icu_data_path: Path to the icudtl.dat file.
41 // - aot_library_path: Path to the AOT snapshot file.
42 //
43 // The paths may either be absolute or relative to the directory containing
44 // the running executable.
45 explicit DartProject(const std::wstring& assets_path,
46 const std::wstring& icu_data_path,
47 const std::wstring& aot_library_path) {
48 assets_path_ = assets_path;
49 icu_data_path_ = icu_data_path;
50 aot_library_path_ = aot_library_path;
51 }
52
53 // Creates a DartProject from a directory path. The directory should contain
54 // the following top-level items:
55 // - icudtl.dat (provided as a resource by the Flutter tool)
56 // - flutter_assets (as built by the Flutter tool)
57 // - app.so, for an AOT build (as built by the Flutter tool)
58 //
59 // The path can either be absolute, or relative to the directory containing
60 // the running executable.
61 explicit DartProject(const std::wstring& path) {
62 assets_path_ = path + L"\\flutter_assets";
63 icu_data_path_ = path + L"\\icudtl.dat";
64 aot_library_path_ = path + L"\\app.so";
65 }
66
67 ~DartProject() = default;
68
69 // Sets the Dart entrypoint to the specified value.
70 //
71 // If not set, the default entrypoint (main) is used. Custom Dart entrypoints
72 // must be decorated with `@pragma('vm:entry-point')`.
73 void set_dart_entrypoint(const std::string& entrypoint) {
74 if (entrypoint.empty()) {
75 return;
76 }
77 dart_entrypoint_ = entrypoint;
78 }
79
80 // Returns the Dart entrypoint.
81 const std::string& dart_entrypoint() const { return dart_entrypoint_; }
82
83 // Sets the command line arguments that should be passed to the Dart
84 // entrypoint.
85 void set_dart_entrypoint_arguments(std::vector<std::string> arguments) {
86 dart_entrypoint_arguments_ = std::move(arguments);
87 }
88
89 // Returns any command line arguments that should be passed to the Dart
90 // entrypoint.
91 const std::vector<std::string>& dart_entrypoint_arguments() const {
92 return dart_entrypoint_arguments_;
93 }
94
95 // Sets the GPU usage preference for flutter engine.
99
100 // Returns the project's GPU preference.
101 // Defaults to NoPreference.
102 GpuPreference gpu_preference() const { return gpu_preference_; }
103
104 // Sets the thread policy for UI isolate.
106 ui_thread_policy_ = policy;
107 }
108
109 // Returns the policy for UI isolate.
110 // Defaults to UIThreadPolicy::Default.
111 UIThreadPolicy ui_thread_policy() const { return ui_thread_policy_; }
112
113 private:
114 // Accessors for internals are private, so that they can be changed if more
115 // flexible options for project structures are needed later without it
116 // being a breaking change. Provide access to internal classes that need
117 // them.
118 friend class FlutterEngine;
120 friend class DartProjectTest;
121
122 const std::wstring& assets_path() const { return assets_path_; }
123 const std::wstring& icu_data_path() const { return icu_data_path_; }
124 const std::wstring& aot_library_path() const { return aot_library_path_; }
125
126 // The path to the assets directory.
127 std::wstring assets_path_;
128 // The path to the ICU data.
129 std::wstring icu_data_path_;
130 // The path to the AOT library. This will always return a path, but non-AOT
131 // builds will not be expected to actually have a library at that path.
132 std::wstring aot_library_path_;
133 // The Dart entrypoint to launch.
134 std::string dart_entrypoint_;
135 // The list of arguments to pass through to the Dart entrypoint.
136 std::vector<std::string> dart_entrypoint_arguments_;
137 // The preference for GPU to be used by flutter engine.
139 // Thread policy for UI isolate.
140 UIThreadPolicy ui_thread_policy_ = UIThreadPolicy::Default;
141};
142
143} // namespace flutter
144
145#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