Java 互操作使用 package:jnigen
在 Dart Native 平台上運行的 Dart 行動裝置、命令列和伺服器應用程式,在 Android、Windows、macOS 和 Linux 上可以使用 package:jni
和 package:jnigen
來呼叫 Java 和 Kotlin API。
package:jni
允許 Dart 程式碼透過 JNI 與 Java 互動。然而,這樣做會涉及大量樣板程式碼,因此您可以使用 package:jnigen
為給定的 Java API 自動產生 Dart 綁定。
您可以將 Kotlin 編譯為 Java 位元組碼,允許 package:jnigen
也為 Kotlin 產生綁定。
簡單的 Java 範例
#本指南將帶您逐步了解一個範例,該範例使用 package:jnigen
為一個簡單的類別產生綁定。
先決條件
#- JDK
- Maven
設定 jnigen
#首先,新增 package:jni
作為依賴項,並新增 package:jnigen
作為開發依賴項。
$ dart pub add jni dev:jnigen
接下來,建立一個名為 jnigen.yaml
的頂層檔案。此檔案包含產生綁定的設定。
output:
dart:
path: lib/example.dart
structure: single_file
source_path:
- 'java/'
classes:
- 'dev.dart.Example'
path
指定產生的 dart
綁定的路徑。
source_path
指定您要為其產生綁定的 Java 原始檔的路徑,而 classes
指定 Java 類別。
java/dev/dart/Example.java
包含一個非常簡單的類別,其中有一個名為 sum
的公用靜態方法
package dev.dart;
public class Example {
public static int sum(int a, int b) {
return a + b;
}
}
產生 Dart 綁定
#若要產生 Dart 綁定,請執行 jnigen
並使用 --config
選項指定設定檔
$ dart run jnigen --config jnigen.yaml
在本範例中,這會產生 lib/example.dart,正如您在 jnigen.yaml
中指定的那樣。
此檔案包含一個名為 Example
的類別,其中有一個名為 sum
的靜態方法,就像 Java 檔案一樣。
使用綁定
#現在您已準備好載入並與產生的函式庫互動。範例應用程式 bin/sum.dart 取得兩個數字作為引數並印出它們的總和。使用 Example.sum
方法與 Java 完全相同。
// a and b are integer arguments
print(Example.sum(a, b));
執行範例
#在執行範例之前,您必須為 jni
建置動態函式庫。Java 原始碼也必須編譯。若要執行此操作,請執行
$ dart run jni:setup
$ javac java/dev/dart/Example.java
現在您可以執行範例
$ dart run jnigen_example:sum 17 25
輸出 42
!
更多範例
#以下是更多關於使用 package:jnigen
的綜合範例
範例 | 描述 |
---|---|
in_app_java | 示範如何在 Flutter 應用程式中包含自訂 Java 程式碼,並使用 jnigen 呼叫它。 |
pdfbox_plugin | Flutter 外掛程式的範例,該外掛程式提供與 Apache PDFBox 函式庫的綁定。 |
notification_plugin | 可重複使用的 Flutter 外掛程式範例,其中包含使用 Android 函式庫的自訂 Java 程式碼。 |
除非另有說明,否則本網站上的文件反映 Dart 3.7.1 版本。頁面上次更新於 2024-05-22。 查看原始碼 或 回報問題。