Btleplug - это библиотека Async Rust Ble, поддерживающая Windows 10, MacOS, Linux, iOS и Android (включая Flutter, см. Ниже для получения дополнительной информации).
Он вырос из нескольких более ранних заброшенных библиотек для различных платформ (Rumble, Blurmac и т. Д.), С целью создания полностью меж платформной библиотеки. Если вам интересно, как выросла библиотека, вы можете прочитать больше об этом в этом сообщении.
Btleplug предназначен только для хоста/центрального режима . Если вы заинтересованы в периферическом крончнике (то есть действуя как устройство LE Bluetooth, а не подключение к одному), ознакомьтесь с Bluster или Ble-Peripheral-rust.
Эта библиотека не поддерживает Bluetooth 2/Classic . Нет планов, чтобы добавить поддержку BT2/Classic.
| Особенность | Окна | Macos / ios | Linux | Android |
|---|---|---|---|---|
| Принесите адаптер | Х | Х | Х | Х |
| Обрабатывать несколько адаптеров | Х | |||
| Откройте для себя устройства | Х | Х | Х | Х |
| └ Обнаружение услуг | Х | Х | Х | Х |
| └ Откройте для себя характеристики | Х | Х | Х | Х |
| └ Откройте для себя дескрипторы | Х | Х | Х | Х |
| └ Откройте для себя имя | Х | Х | Х | Х |
| └ Обнаружение данных производителя | Х | Х | Х | Х |
| └ Обнаружение данных обслуживания | Х | Х | Х | Х |
| └ Откройте для себя MAC -адрес | Х | Х | Х | |
| GATT Server Connect | Х | Х | Х | Х |
| Gatt server connect connect | Х | Х | Х | Х |
| GATT Server отключите | Х | Х | Х | Х |
| GATT Server ОТКЛЮЧЕНИЕ | Х | Х | Х | Х |
| Напишите на характерную | Х | Х | Х | Х |
| Читать из характеристики | Х | Х | Х | Х |
| Подписаться на характерные | Х | Х | Х | Х |
| Отписаться от характерной | Х | Х | Х | Х |
| Получить характерное событие уведомления | Х | Х | Х | Х |
| Прочитайте дескриптор | Х | Х | Х | Х |
| Написать дескриптор | Х | Х | Х | Х |
| Получить MTU | ||||
| Получить интервал подключения |
Чтобы обеспечить реализацию Serde's Serialize и Deserialize для некоторых общих типов в модуле api , используйте функцию serde .
[ dependencies ]
btleplug = { version = " 0.11 " , features = [ " serde " ] } Чтобы использовать Bluetooth на MacOS Big SUR (11) или позже, вам необходимо либо упаковать свой двоичный файл в пакет приложения с Info.plist включая NSBluetoothAlwaysUsageDescription , или (для приложения командной строки, например, примеры, включенные в btleplug ), включают разрешение Bluetooth для вашего терминала. Вы можете сделать последнее, перейдя в системные настройки → Безопасность и конфиденциальность → конфиденциальность → Bluetooth , нажав кнопку «+» и выбрав «терминал» (или iTerm или любое приложение терминала, которое вы используете).
Из -за требуемой гибридной сборки ржавчины/Java Btleplug для Android требуется несколько сложная установка.
Некоторая информация о выполнении сборки доступна в оригинальной проблеме для поддержки Android в BTLPLUG.
Быстрый обзор процесса сборки:
src/droidplug/java , используя прилагаемые файлы Gradle, и их в Maven Repo, или имеют часть Java вашего приложения Android для этой локальной реализации.cargo-ndk для сборки. Выведите jnilibs и убедитесь, что они оказываются в нужном месте в вашем приложении.Оптимизация прогноза может быть проблемой при использовании BtlePlug, поскольку файл .AAR, сгенерированный кодом Java в BtlePlug, доступ к нативному коду, и может быть оптимизирован как часть удаления мертвого кода и сокращение ресурсов. Чтобы исправить это, необходимо внести изменения в ваш файл build.gradle, и правила прогиба должны будут быть определены.
Для build.gradle:
buildTypes {
release {
// TODO: Add your own signing config for the release build.
// Signing with the debug keys for now, so `flutter run --release` works.
signingConfig signingConfigs . debug
shrinkResources true
minifyEnabled true
proguardFiles getDefaultProguardFile( ' proguard-android-optimize.txt ' ), ' proguard-rules.pro '
}
}Прогворды-Рулы.pro:
#Flutter Wrapper - Only needed if using flutter
-keep class io.flutter.app.** { *; }
-keep class io.flutter.plugin.** { *; }
-keep class io.flutter.util.** { *; }
-keep class io.flutter.view.** { *; }
-keep class io.flutter.** { *; }
-keep class io.flutter.plugins.** { *; }
#btleplug resources
-keep class com.nonpolynomial.** { *; }
-keep class io.github.gedgygedgy.** { *; }
Поскольку реализация CoreBluetooth распространяется между macOS и iOS, Btleplug на iOS должна «просто работать» и кажется стабильной. То, как это построено, может варьироваться в зависимости от настройки вашего приложения и на каком языке вы связываете, но примеры инструкций следующие (взятые отсюда):
Есть также несколько примеров в перечисленной ниже примере.
Хотя мы специально не поддерживаем Flutter, есть шаблон, доступный по адресу https://github.com/trobanga/flutter_btleplug. Этот шаблон имеет сборки как для Android, так и для iOS с использованием Btleplug.
Поскольку компиляция Flutter имеет тенденцию быть сложной на всех платформах, мы не можем не с проблемами размены.
Хотя мы специально не поддерживаем Таури, есть плагин, доступный по адресу https://github.com/mnlphlp/tauri-plugin-blec. Обратите внимание, что все вопросы Таури должны перейти в плагин репо, прежде чем приехать сюда, мы не можем помочь с проблемами Таури, поскольку ни один из разработчиков этого проекта не использует Таури.
У каждого разные потребности Bluetooth, поэтому, если Btleplug не подходит вам, попробуйте эти другие библиотеки от сообщества Rust!
Btleplug покрывается по лицензии BSD 3-CRAUSE, с некоторыми частями от Rumble/Blurmac, охватываемых по двойной лицензии MIT/Apache, и лицензиями BSD 3-CLAUSE соответственно. См. License.md для получения дополнительной информации и информации об авторском праве.