From d26ca14fae41afb44594de65167a7a709884dc90 Mon Sep 17 00:00:00 2001 From: Swift Kim Date: Fri, 26 Aug 2022 12:32:25 +0900 Subject: [PATCH] [tizen_app_control] Improve FFI symbol resolution --- packages/tizen_app_control/CHANGELOG.md | 3 +- packages/tizen_app_control/README.md | 2 +- packages/tizen_app_control/lib/src/ffi.dart | 41 +++++---------------- packages/tizen_app_control/pubspec.yaml | 2 +- 4 files changed, 14 insertions(+), 34 deletions(-) diff --git a/packages/tizen_app_control/CHANGELOG.md b/packages/tizen_app_control/CHANGELOG.md index 30e08fcc5..0a9f26366 100644 --- a/packages/tizen_app_control/CHANGELOG.md +++ b/packages/tizen_app_control/CHANGELOG.md @@ -1,5 +1,6 @@ -## NEXT +## 0.2.2 +* Improve FFI symbol resolution. * Resolve linter warnings. ## 0.2.1 diff --git a/packages/tizen_app_control/README.md b/packages/tizen_app_control/README.md index 04588a964..30cc9edb0 100644 --- a/packages/tizen_app_control/README.md +++ b/packages/tizen_app_control/README.md @@ -10,7 +10,7 @@ To use this package, add `tizen_app_control` as a dependency in your `pubspec.ya ```yaml dependencies: - tizen_app_control: ^0.2.1 + tizen_app_control: ^0.2.2 ``` ### Sending a launch request diff --git a/packages/tizen_app_control/lib/src/ffi.dart b/packages/tizen_app_control/lib/src/ffi.dart index cda214060..19a7dc875 100644 --- a/packages/tizen_app_control/lib/src/ffi.dart +++ b/packages/tizen_app_control/lib/src/ffi.dart @@ -15,41 +15,20 @@ typedef CreateAppControl = int Function(Object); typedef _AttachAppControlNative = Int8 Function(Int32, Handle); typedef _AttachAppControl = int Function(int, Object); -DynamicLibrary? _libEmbedderCache; - -DynamicLibrary get _libEmbedder { - if (_libEmbedderCache == null) { - const List embedderPaths = [ - 'libflutter_tizen.so', - 'libflutter_tizen_common.so', - 'libflutter_tizen_mobile.so', - 'libflutter_tizen_tv.so', - 'libflutter_tizen_wearable.so', - ]; - for (final String path in embedderPaths) { - try { - _libEmbedderCache = DynamicLibrary.open(path); - break; - } on ArgumentError { - continue; - } - } - if (_libEmbedderCache == null) { - throw Exception('Failed to load the embedder library.'); - } - final _InitializeDartApi initFunction = _libEmbedder.lookupFunction< - _InitializeDartApiNative, - _InitializeDartApi>('NativeInitializeDartApi'); - initFunction(NativeApi.initializeApiDLData); - } - return _libEmbedderCache!; -} +final DynamicLibrary _processLib = () { + final DynamicLibrary processLib = DynamicLibrary.process(); + final _InitializeDartApi initFunction = + processLib.lookupFunction<_InitializeDartApiNative, _InitializeDartApi>( + 'NativeInitializeDartApi'); + initFunction(NativeApi.initializeApiDLData); + return processLib; +}(); final CreateAppControl nativeCreateAppControl = - _libEmbedder.lookupFunction<_CreateAppControlNative, CreateAppControl>( + _processLib.lookupFunction<_CreateAppControlNative, CreateAppControl>( 'NativeCreateAppControl'); final _AttachAppControl _nativeAttachAppControl = - _libEmbedder.lookupFunction<_AttachAppControlNative, _AttachAppControl>( + _processLib.lookupFunction<_AttachAppControlNative, _AttachAppControl>( 'NativeAttachAppControl'); bool nativeAttachAppControl(int id, Object dartObject) { diff --git a/packages/tizen_app_control/pubspec.yaml b/packages/tizen_app_control/pubspec.yaml index 60f17dda8..0c462297f 100644 --- a/packages/tizen_app_control/pubspec.yaml +++ b/packages/tizen_app_control/pubspec.yaml @@ -3,7 +3,7 @@ description: Tizen application control APIs. Used for launching and terminating applications on a Tizen device. homepage: https://github.com/flutter-tizen/plugins repository: https://github.com/flutter-tizen/plugins/tree/master/packages/tizen_app_control -version: 0.2.1 +version: 0.2.2 dependencies: ffi: ">=1.1.2 <3.0.0"