public override void Run(string[] args) { // Log any unhandled exception. AppDomain.CurrentDomain.UnhandledException += (s, e) => { var exception = e.ExceptionObject as Exception; InternalLog.Error(LogTag, $"Unhandled exception: {exception}"); }; // Parse engine arguments passed from the tool. This should be reworked. for (int i = args.Length - 1; i >= 0; i--) { var arg = args[i].Trim('\''); if (arg.StartsWith("FLUTTER_ENGINE_ARGS")) { var engineArgs = arg.Substring(arg.IndexOf(' ')); InternalLog.Debug(LogTag, "Running with: " + engineArgs); // A regex is used here to correctly parse "quoted" strings. // TODO: Avoid using Linq to reduce the memory pressure. EngineArgs.AddRange(Regex.Matches(engineArgs, @"[\""].+?[\""]|[^ ]+") .Cast <Match>() .Select(x => x.Value.Trim('"'))); break; } } base.Run(args); }
public static void Error( string message, [CallerFilePath] string file = "", [CallerMemberName] string func = "", [CallerLineNumber] int line = 0) { InternalLog.Error(LogTag, message, file, func, line); }
public override void Run(string[] args) { // Log any unhandled exception. AppDomain.CurrentDomain.UnhandledException += (s, e) => { var exception = e.ExceptionObject as Exception; InternalLog.Error(LogTag, $"Unhandled exception: {exception}"); }; base.Run(args); }
protected override void OnCreate() { base.OnCreate(); // Read engine arguments passed from the tool. ParseEngineArgs(); InternalLog.Info(LogTag, $"switches: {string.Join(" ", EngineArgs)}"); // Get the screen size of the currently running device. if (!Information.TryGetValue("http://tizen.org/feature/screen.width", out int width) || !Information.TryGetValue("http://tizen.org/feature/screen.height", out int height)) { InternalLog.Error(LogTag, "Could not obtain the screen size."); return; } var windowProperties = new FlutterWindowProperties { width = width, height = height }; // Get paths to resources required for launch. string resPath = Current.DirectoryInfo.Resource; string assetsPath = $"{resPath}/flutter_assets"; string icuDataPath = $"{resPath}/icudtl.dat"; string arch = RuntimeInformation.ProcessArchitecture switch { Architecture.X86 => "x86", Architecture.X64 => "x64", Architecture.Arm => "arm", Architecture.Arm64 => "aarch64", _ => "", }; string aotLibPath = $"{resPath}/../lib/{arch}/libapp.so"; using var switches = new StringArray(EngineArgs); var engineProperties = new FlutterEngineProperties { assets_path = assetsPath, icu_data_path = icuDataPath, aot_library_path = aotLibPath, switches = switches.Handle, switches_count = (uint)switches.Length, }; Handle = FlutterCreateWindow(ref windowProperties, ref engineProperties); if (Handle.IsInvalid) { throw new Exception("Could not launch a Flutter application."); } }
protected ApiServiceWrapper CreateApiService(AccessToken accessToken) { try { var dtoService = CreateDtoService(Config.Access.AccountName); var apiService = new ApiService(dtoService, accessToken); return(new ApiServiceWrapper(this, apiService)); } catch (Exception exception) { InternalLog.Error("Не удалось настроить веб-сервис для аккаунта [" + Config.Access.AccountName + "]", exception); // отдадим заглушку var apiService = new FakeApiService(); apiService.SetAccessToken(accessToken); return(new ApiServiceWrapper(this, apiService)); } }
protected override void OnCreate() { base.OnCreate(); // Read the current platform version and choose a Tizen 4.0 embedder if applicable. Information.TryGetValue("http://tizen.org/feature/platform.version", out PlatformVersion); // Read engine arguments passed from the tool. ParseEngineArgs(); InternalLog.Info(LogTag, $"switches: {string.Join(" ", EngineArgs)}"); // Get the screen size of the currently running device. if (!Information.TryGetValue("http://tizen.org/feature/screen.width", out int width) || !Information.TryGetValue("http://tizen.org/feature/screen.height", out int height)) { InternalLog.Error(LogTag, "Could not obtain the screen size."); return; } var windowProperties = new FlutterWindowProperties { width = width, height = height }; // Get paths to resources required for launch. string resPath = Current.DirectoryInfo.Resource; string assetsPath = $"{resPath}/flutter_assets"; string icuDataPath = $"{resPath}/icudtl.dat"; string arch = RuntimeInformation.ProcessArchitecture switch { Architecture.X86 => "x86", Architecture.X64 => "x64", Architecture.Arm => "arm", Architecture.Arm64 => "aarch64", _ => "", }; string aotLibPath = $"{resPath}/../lib/{arch}/libapp.so"; using var switches = new StringArray(EngineArgs); var engineProperties = new FlutterEngineProperties { assets_path = assetsPath, icu_data_path = icuDataPath, aot_library_path = aotLibPath, switches = switches.Handle, switches_count = (uint)switches.Length, }; // This check is not actually required, but we want to make sure that libflutter_engine.so is loaded // before a call to FlutterCreateWindow() is made to avoid library loading issues on TV emulator. if (FlutterEngineRunsAOTCompiledDartCode()) { InternalLog.Debug(LogTag, "Running in AOT mode."); } Handle = FlutterCreateWindow(ref windowProperties, ref engineProperties); if (Handle.IsInvalid) { throw new Exception("Could not launch a Flutter application."); } }