Как использовать нативную библиотеку C в пакете флаттера - PullRequest
1 голос
/ 26 июня 2019

У меня есть библиотека, написанная на C, которую я ранее использовал из java-приложения для Android через JNI.

Теперь я перехожу к использованию флаттера, и планировалось создать пакет флаттера, который обернет библиотеку C.

Был создан проект флаттера для пакета, и планируется использовать каналы платформы (invokeMethod для вызова некоторых простых методов Java, которые вызывают JNI для библиотеки. Я думаю, что большая часть этого реализована.

Проблема, однако, в том, что я обычно добавляю информацию о существовании библиотеки и JNI в build.gradle моего Android-проекта Java. Однако я не могу найти эти файлы, когда я работаю в структуре флаттера. Если я вместо этого создаю стандартный проект флаттера (приложение с пользовательским интерфейсом), у меня внезапно появляются файлы build.gradle.

Как я могу добавить эти файлы Gradle или я должен вместо этого добавить информацию о lib / JNI в некоторые другие специфичные для флаттера файлы? Звучит ли многослойный подход dart-> platformChannel -> java -> jni -> C библиотека как правильный способ сделать это? или есть лучший способ?

1 Ответ

1 голос
/ 26 июня 2019

Вы уверены, что создали проект плагина Flutter (не пакет)? Плагин - это тип пакета с кодом Dart / Kotlin (или Java) / Swift (или Obj-C), реализующим нативный уровень Flutter, plus пример приложения, которое демонстрирует и использует плагин.

Плагин Flutter имеет 3 файла build.gradle:

  1. ./android/build.grade где вы устанавливаете минимальный SDK плагина, зависимости и т.д.
  2. ./example/android/build.grade, который обычно остается без изменений
  3. ./example/android/app/build.gradle где вы устанавливаете вещи для примера приложения

Любые изменения, которые вы вносите в (1), попадают в пример приложения (это просто пример приложения, использующего ваш плагин). Аналогично, когда вы используете плагин в другом приложении, это приложение просто забирает (1) из вашего плагина.

Добавьте свои зависимости в (1).

...