Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
flutter::FlutterProjectBundle Class Reference

#include <flutter_project_bundle.h>

Public Member Functions

 FlutterProjectBundle (const FlutterDesktopEngineProperties &properties)
 
 ~FlutterProjectBundle ()
 
bool HasValidPaths ()
 
const std::filesystem::path & assets_path ()
 
const std::filesystem::path & icu_path ()
 
const std::vector< std::string > GetSwitches ()
 
void SetSwitches (const std::vector< std::string > &switches)
 
UniqueAotDataPtr LoadAotData (const FlutterEngineProcTable &engine_procs)
 
const std::string & dart_entrypoint () const
 
const std::vector< std::string > & dart_entrypoint_arguments () const
 

Detailed Description

Definition at line 21 of file flutter_project_bundle.h.

Constructor & Destructor Documentation

◆ FlutterProjectBundle()

flutter::FlutterProjectBundle::FlutterProjectBundle ( const FlutterDesktopEngineProperties properties)
explicit

Definition at line 15 of file flutter_project_bundle.cc.

17 : assets_path_(properties.assets_path),
18 icu_path_(properties.icu_data_path) {
19 if (properties.aot_library_path != nullptr) {
20 aot_library_path_ = std::filesystem::path(properties.aot_library_path);
21 }
22
23 if (properties.dart_entrypoint && properties.dart_entrypoint[0] != '\0') {
24 dart_entrypoint_ = properties.dart_entrypoint;
25 }
26
27 for (int i = 0; i < properties.dart_entrypoint_argc; i++) {
28 dart_entrypoint_arguments_.push_back(
29 std::string(properties.dart_entrypoint_argv[i]));
30 }
31
32 // Resolve any relative paths.
33 if (assets_path_.is_relative() || icu_path_.is_relative() ||
34 (!aot_library_path_.empty() && aot_library_path_.is_relative())) {
35 std::filesystem::path executable_location = GetExecutableDirectory();
36 if (executable_location.empty()) {
38 << "Unable to find executable location to resolve resource paths.";
39 assets_path_ = std::filesystem::path();
40 icu_path_ = std::filesystem::path();
41 } else {
42 assets_path_ = std::filesystem::path(executable_location) / assets_path_;
43 icu_path_ = std::filesystem::path(executable_location) / icu_path_;
44 if (!aot_library_path_.empty()) {
45 aot_library_path_ =
46 std::filesystem::path(executable_location) / aot_library_path_;
47 }
48 }
49 }
50}
#define FML_LOG(severity)
Definition logging.h:82
std::filesystem::path GetExecutableDirectory()
Definition path_utils.cc:16
#define ERROR(message)

◆ ~FlutterProjectBundle()

flutter::FlutterProjectBundle::~FlutterProjectBundle ( )

Definition at line 83 of file flutter_project_bundle.cc.

83{}

Member Function Documentation

◆ assets_path()

const std::filesystem::path & flutter::FlutterProjectBundle::assets_path ( )
inline

Definition at line 36 of file flutter_project_bundle.h.

36{ return assets_path_; }

◆ dart_entrypoint()

const std::string & flutter::FlutterProjectBundle::dart_entrypoint ( ) const
inline

Definition at line 54 of file flutter_project_bundle.h.

54{ return dart_entrypoint_; }

◆ dart_entrypoint_arguments()

const std::vector< std::string > & flutter::FlutterProjectBundle::dart_entrypoint_arguments ( ) const
inline

Definition at line 58 of file flutter_project_bundle.h.

58 {
59 return dart_entrypoint_arguments_;
60 }

◆ GetSwitches()

const std::vector< std::string > flutter::FlutterProjectBundle::GetSwitches ( )

Definition at line 90 of file flutter_project_bundle.cc.

90 {
91 if (engine_switches_.size() == 0) {
93 }
94 std::vector<std::string> switches;
95 switches.insert(switches.end(), engine_switches_.begin(),
96 engine_switches_.end());
97
98 auto env_switches = GetSwitchesFromEnvironment();
99 switches.insert(switches.end(), env_switches.begin(), env_switches.end());
100
101 return switches;
102}
std::vector< std::string > GetSwitchesFromEnvironment()

◆ HasValidPaths()

bool flutter::FlutterProjectBundle::HasValidPaths ( )

Definition at line 52 of file flutter_project_bundle.cc.

52 {
53 return !assets_path_.empty() && !icu_path_.empty();
54}

◆ icu_path()

const std::filesystem::path & flutter::FlutterProjectBundle::icu_path ( )
inline

Definition at line 39 of file flutter_project_bundle.h.

39{ return icu_path_; }

◆ LoadAotData()

UniqueAotDataPtr flutter::FlutterProjectBundle::LoadAotData ( const FlutterEngineProcTable engine_procs)

Definition at line 58 of file flutter_project_bundle.cc.

59 {
60 if (aot_library_path_.empty()) {
62 << "Attempted to load AOT data, but no aot_library_path was provided.";
63 return UniqueAotDataPtr(nullptr, nullptr);
64 }
65 if (!std::filesystem::exists(aot_library_path_)) {
66 FML_LOG(ERROR) << "Can't load AOT data from "
67 << aot_library_path_.u8string() << "; no such file.";
68 return UniqueAotDataPtr(nullptr, nullptr);
69 }
70 std::string path_string = aot_library_path_.u8string();
73 source.elf_path = path_string.c_str();
74 FlutterEngineAOTData data = nullptr;
75 auto result = engine_procs.CreateAOTData(&source, &data);
76 if (result != kSuccess) {
77 FML_LOG(ERROR) << "Failed to load AOT data from: " << path_string;
78 return UniqueAotDataPtr(nullptr, nullptr);
79 }
80 return UniqueAotDataPtr(data, engine_procs.CollectAOTData);
81}
@ kFlutterEngineAOTDataSourceTypeElfPath
Definition embedder.h:2108
SkBitmap source
Definition examples.cpp:28
GAsyncResult * result
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot data
Definition switches.h:41
std::unique_ptr< _FlutterEngineAOTData, FlutterEngineCollectAOTDataFnPtr > UniqueAotDataPtr
FlutterEngineCreateAOTDataFnPtr CreateAOTData
Definition embedder.h:3321
FlutterEngineCollectAOTDataFnPtr CollectAOTData
Definition embedder.h:3322

◆ SetSwitches()

void flutter::FlutterProjectBundle::SetSwitches ( const std::vector< std::string > &  switches)

Definition at line 85 of file flutter_project_bundle.cc.

86 {
87 engine_switches_ = switches;
88}

The documentation for this class was generated from the following files: