iOS EspBlufiForiOS Bluetooth

为了适配供应商 EspBlufiForiOS ,经过我的内部迭代。目前能做到比较稳定的状态。

更新

  1. 支持 Cocoapods
  2. log 回调
  3. 提升稳定性
  4. 兼容最新的 OpenSSL 版本,兼容模拟器运行。

Cocoapods

blufi-library ,目前还没有推到官方的 pod repo。建议拉下来后 push 到自己的私有 repo。

log 回调

在 BlufiDelegate 中新增了 log 日志回调,方便用自己的日志组件打印,比如:CocoaLumberjack。

提升稳定性

  • 增加 nil 判断,在断开重连后偶现 _writeChar 为 nil 导致闪退的问题。
  • 增加从 CBCentralManager 初始化 BlufiClient,如果你想自己搜索蓝牙设备,与其它组件共享 CBCentralManager 对象(EspBlufiForiOS 的代码质量真的是一言难尽)。
  • _requireAck 默认开启,提升稳定性。

模拟器运行警告

最重要的部分,自从项目依赖 EspBlufiForiOS 以来,出现了很多问题:

1.模拟器运行报错

Could not find module 'xxx' for target 'x86_64-apple-ios-simulator'; found: arm64-apple-ios-simulator

2.为了解决上述问题,你可能会在 Podfile 配置排除模拟器的 arm64 运行。

installer.pods_project.build_configurations.each do |config|
          config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
        end

导致模拟器运行的时候各种异常,Xcode 控制台警告:

Warning: Error creating LLDB target at path '/Users/xx/Library/Developer/Xcode/DerivedData/Build/Products/Debug-iphonesimulator/XXX.app'- using an empty LLDB target which can cause slow memory reads from remote devices.

有时候模拟器再次运行的时候还会黑屏!
因为你在一个 arm64 的模拟器里面(m1,m2 芯片的电脑上)运行一个 x86_64 架构的 App😭。

问题的根本原因是由于 EspBlufiForiOS 的依赖库 OpenSSL-Universal v1.0.2.20 不支持模拟器的 arm64 架构。

它的库本身甚至都不是依赖的,而是直接包含 libcrypto.a libssl.a 两个文件,无力吐槽!

根据查找 OpenSSL ,发现它在新版本里面已经支持 OpenSSL.xcframework

XCFramework 是苹果新出的库类型,在 Xcode 11 及 Cocoapods 1.9 以上版本被支持,与普通动态库/静态库最大的区别是将多个平台的二进制库,捆绑到一个可分发的.xcframework捆绑包中,支持所有的苹果平台和架构。

为了兼容 OpenSSL 最新的版本,必须改造 BlufiSecurity 里的 dhGenerateKeys 函数。经过多次测试,目前我的 blufi-library 能完美解决上述问题。

RECENT POSTS

  • 更好用的 EspBlufiForiOS
  • Swift ClosedRange
  • 关于苹果开发者账号遇到的若干问题
  • AWS IoT 支持 M1 Mac
  • Git Flow: Finish Feature 错误
  • Non-public API usage
  • 不透明类型和协议类型之间的区别 (下)
  • 返回不透明类型(中)
  • RECENT COMMENTS

  • lee : 支持Encodable了吗
  • Bill : solved my problem very...
  • Bill : 是的,Firebase 也建议把 Run S...
  • GONGHUAN : 想了解一下 encoder那部分的代码 ...
  • zhenghongshe : 说下我的问题:【Build Phases】-...
  • Bill : If you have any questi...
  • jjj : kkk
  • wahaha : 希望您能回复我的信息,期待一起探讨该问题。
  •