[flutter] Closes #2438, support static linking of native libraries.

This commit is contained in:
Mario Zechner 2024-04-30 12:30:13 +02:00
parent 9c9bcb9428
commit 0e00ce4f07
3 changed files with 9 additions and 5 deletions

View File

@ -53,6 +53,10 @@ class SpineFlutterFFI {
SpineFlutterFFI(this.dylib, this.allocator); SpineFlutterFFI(this.dylib, this.allocator);
} }
Future<SpineFlutterFFI> initSpineFlutterFFI() async { Future<SpineFlutterFFI> initSpineFlutterFFI(bool useStaticLinkage) async {
if (useStaticLinkage) {
return SpineFlutterFFI(DynamicLibrary.process(), malloc);
} else {
return SpineFlutterFFI(_dylib, malloc); return SpineFlutterFFI(_dylib, malloc);
}
} }

View File

@ -44,7 +44,7 @@ class SpineFlutterFFI {
SpineFlutterFFI(this.dylib, this.allocator); SpineFlutterFFI(this.dylib, this.allocator);
} }
Future<SpineFlutterFFI> initSpineFlutterFFI() async { Future<SpineFlutterFFI> initSpineFlutterFFI(bool useStaticLinkage) async {
if (_module == null) { if (_module == null) {
Memory.init(); Memory.init();

View File

@ -50,8 +50,8 @@ export 'spine_widget.dart';
late SpineFlutterBindings _bindings; late SpineFlutterBindings _bindings;
late Allocator _allocator; late Allocator _allocator;
Future<void> initSpineFlutter({bool enableMemoryDebugging = false}) async { Future<void> initSpineFlutter({bool useStaticLinkage = false, bool enableMemoryDebugging = false}) async {
final ffi = await initSpineFlutterFFI(); final ffi = await initSpineFlutterFFI(useStaticLinkage);
_bindings = SpineFlutterBindings(ffi.dylib); _bindings = SpineFlutterBindings(ffi.dylib);
_allocator = ffi.allocator; _allocator = ffi.allocator;
if (enableMemoryDebugging) _bindings.spine_enable_debug_extension(-1); if (enableMemoryDebugging) _bindings.spine_enable_debug_extension(-1);