From 0e00ce4f07ceac40ed6fd4b065f8c00dd1c85ad4 Mon Sep 17 00:00:00 2001 From: Mario Zechner Date: Tue, 30 Apr 2024 12:30:13 +0200 Subject: [PATCH] [flutter] Closes #2438, support static linking of native libraries. --- spine-flutter/lib/init.dart | 8 ++++++-- spine-flutter/lib/init_web.dart | 2 +- spine-flutter/lib/spine_flutter.dart | 4 ++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/spine-flutter/lib/init.dart b/spine-flutter/lib/init.dart index 7fce1b55f..ae5d83c4e 100644 --- a/spine-flutter/lib/init.dart +++ b/spine-flutter/lib/init.dart @@ -53,6 +53,10 @@ class SpineFlutterFFI { SpineFlutterFFI(this.dylib, this.allocator); } -Future initSpineFlutterFFI() async { - return SpineFlutterFFI(_dylib, malloc); +Future initSpineFlutterFFI(bool useStaticLinkage) async { + if (useStaticLinkage) { + return SpineFlutterFFI(DynamicLibrary.process(), malloc); + } else { + return SpineFlutterFFI(_dylib, malloc); + } } diff --git a/spine-flutter/lib/init_web.dart b/spine-flutter/lib/init_web.dart index f494f7cea..e650a72ab 100644 --- a/spine-flutter/lib/init_web.dart +++ b/spine-flutter/lib/init_web.dart @@ -44,7 +44,7 @@ class SpineFlutterFFI { SpineFlutterFFI(this.dylib, this.allocator); } -Future initSpineFlutterFFI() async { +Future initSpineFlutterFFI(bool useStaticLinkage) async { if (_module == null) { Memory.init(); diff --git a/spine-flutter/lib/spine_flutter.dart b/spine-flutter/lib/spine_flutter.dart index 02830ecc6..e8b731f92 100644 --- a/spine-flutter/lib/spine_flutter.dart +++ b/spine-flutter/lib/spine_flutter.dart @@ -50,8 +50,8 @@ export 'spine_widget.dart'; late SpineFlutterBindings _bindings; late Allocator _allocator; -Future initSpineFlutter({bool enableMemoryDebugging = false}) async { - final ffi = await initSpineFlutterFFI(); +Future initSpineFlutter({bool useStaticLinkage = false, bool enableMemoryDebugging = false}) async { + final ffi = await initSpineFlutterFFI(useStaticLinkage); _bindings = SpineFlutterBindings(ffi.dylib); _allocator = ffi.allocator; if (enableMemoryDebugging) _bindings.spine_enable_debug_extension(-1);