UTS 开发 iOS 插件, config.json 通过 cocoapods 引入 .a库 (baidunavikit) 报错找不到类
2023年12月06日 1,099
记录一个 UTS 插件引入 .a 库失败的解决方法。
问题描述
在 uni-app 里使用 UTS 语言开发 iOS 插件时,插件里的 config.json
通过 cocoapods
引入.a库(baidunavikit),运行时自定义基座正常,但是代码报错找不到类。
报错分析
![报错库位置](https://cdn.uniappbug.com/wp-content/uploads/2023/12/uts-import-baidunavikit-err-2.jpg)
BaiduNaviKit 这个 pod 库比较特别,代码用 OC 实现,把.a放到 pod 库里且没有包含 Modules 文件夹, 造成在原生应用中 Swift 文件也无法直接引用。
解决方案
百度官方给的在 Swift 引用方案是创建桥接文件。但是对应的 UTS 插件场景下,在 framework 中无法创建桥接文件,由于这是 pod 库,也无法自己创建 Modules 文件夹。
临时解决方案如下:
1.用分库形式引用BaiduNaviKit,代码如下:
{
"name": "BMKLocationKit",
"version": "2.0.9"
},{
"name":
"BaiduNaviKit/Map"
"version": "6.6.0"
}
2.将要使用的 libbaiduNaviOenSDK.a
这个.a库手动的放到插件 libs 目录下,注意要将其依赖的 libssl.a
和 libcrypto.a
也一并放在该目录下:
![baidunavikit 库目录位置](https://cdn.uniappbug.com/wp-content/uploads/2023/12/uts-import-baidunavikit-err-1.jpg)
3.将 libbaiduNaviOpenSDK.a
这个库用到的 .bundle 资源文件放到插件的 Resources 目录下:
![Resources目录](https://cdn.uniappbug.com/wp-content/uploads/2023/12/uts-import-baidunavikit-err-3.jpg)
4、在 uts 插件中使用 libbaiNaviOpenSDK.a
这个库时可直接使用其中的类,无需导入:
BNaviService setAgreePrivacy (false)
总结
BaiduNaviKit 这个 pod 库的 framework 部分可以使用 cocoaPods 引入,.a需要手动导入。