2022-09-13 16:38:03
Обёртки над необычными модулями: часть 2. Подключение к проекту нативных библиотек от производителей устройствПодключить нативную библиотеку к проекту можно как минимум двумя способами:
1. «В лоб»: работая с папками /ios/ и /android/ в корне проекта.
2. Создать Flutter-плагин и подключить его к проекту через pubspec.yaml. Это удобно: модуль гораздо проще шарить между проектами и даже можно выложить на pub.dev.
Если это ваш первый опыт, лучше идти от первого пункта ко второму, экспериментируя на пустом проекте.
Подключение библиотеки к пустому Flutter-проектуБиблиотеки подключаются по инструкциям от производителя. Их можно найти на официальных сайтах и в readme примеров на github.
В случае со сканером штрих-кодов подключить .jar-библиотеку к Android оказалось несложно: открываешь папку
android в корне проекта и действуешь по инструкции.
Для iOS небольшое расхождение с инструкцией возникло: на вкладке проекта Build Settings в строчке Objective-C Bridging Header нужно было указать ссылку на заголовочный файл библиотеки DTDevices.h, но в нормальном Flutter-приложении там уже указана ссылка на Runner-Bridging-Header.h.
Решение оказалось простым: открыть этот Runner-Bridging-Header.h файл и импортировать заголовочный файл в него
Вынесение библиотеки в нативный плагинПосле экспериментов с пустыми проектами и привязкой к нему методов библиотек через method-channel пришло время выносить изменения в отдельный плагин.
Как создать плагин, описывать не буду. На официальном сайте есть отличная статья на эту тему.
Как видно из статьи, обычно объединение двух платформ под единый интерфейс происходит на этом этапе, но бывают исключения. В нашем случае рациональней оказалось разбить обе платформы на два пакета.
Осложняло отладку кода то, что анализатор Android Studio не хотел воспринимать плагин как целый проект и при открытии Kotlin/Java-файла с расписанными method-channel отказывался подсвечивать ошибки.
Решение оказалось тривиальным: нужно открывать папку
android не в плагине `
/название_плагина/android/`, а в примере его использования
`/название_плагина/example/android/`. В таком случае Android Studio отображает две папки Android, в одной из которых лежат файлы нашего пакета.
871 viewsedited 13:38