FlutterのGolang FFIプラグインプロジェクト
このプロジェクトは、Flutter FFIプラグインの出発点です。これは、DART FFIで直接呼び出されたネイティブコードを含む特殊なパッケージです。
このテンプレートは、次の構造を使用します。
src :さまざまなターゲットプラットフォーム用にネイティブコードライブラリをコンパイルするMakeFileにGolangソースコードを含んでいます。
lib :プラグインのAPIを定義し、 dart:ffiを使用してネイティブコードを呼び出すDARTコードが含まれています。
プラットフォームフォルダー( android 、 ios 、 windowsなど):ネイティブコードライブラリをプラットフォームアプリケーションで構築およびバンドルするためのビルドファイルが含まれています。
pubspec.yaml 、次のようにFFIプラグインを指定します。
plugin :
platforms :
some_platform :
ffiPlugin : trueこの構成は、さまざまなターゲットプラットフォームのネイティブビルドを呼び出し、これらのFFIプラグインを使用してフラッターアプリケーションのバイナリをバンドルします。
これは、FFIがフェデレートプラグインで1つのプラットフォームの実装に使用される場合など、Dartpluginclassと組み合わせることができます。
plugin :
implements : some_other_plugin
platforms :
some_platform :
dartPluginClass : SomeClass
ffiPlugin : trueプラグインは、FFIとメソッドチャネルの両方を持つことができます。
plugin :
platforms :
some_platform :
pluginClass : SomeName
ffiPlugin : trueFFI(およびメソッドチャネル)プラグインによって呼び出されるネイティブビルドシステムは次のとおりです。
ネイティブコードを使用するには、DARTのバインディングが必要です。これらを手作業で書くことを避けるために、 package:ffigenによってヘッダーファイル( src/libsum.h )から生成されます。ランニングflutter pub run ffigen --config ffigen.yamlによってバインディングを再生します。
非常に短期間のネイティブ機能は、任意の分離株から直接呼び出すことができます。たとえば、 lib/native_ffi.dartのsumを参照してください。