更好用的 EspBlufiForiOS
in 技术 with 0 comment

更好用的 EspBlufiForiOS

in 技术 with 0 comment

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

更新

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

Cocoapods

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

log 回调

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

提升稳定性

模拟器运行警告

最重要的部分,自从项目依赖 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 能完美解决上述问题。

Responses