uni-app 原生插件开发 iOS 端集成阿里云物联网视频服务SDK后无法启动立刻崩溃
uni-app 原生插件开发 iOS 端集成阿里云物联网视频服务SDK后无法启动立刻崩溃
项目信息 | 详情 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Mac |
PC开发环境版本 | 12.3.1 |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 3.3.13 |
手机系统 | iOS |
手机系统版本号 | iOS 15 |
手机厂商 | 模拟器 |
手机机型 | iPhone13 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 离线 |
项目创建方式 | HBuilderX |
操作步骤:
下载离线打包SDK 3.3.13.20220314 版本
打开 HBuilder-uniPluginDemo 目录
在此目录下执行
pod init
pod install
按照pod 的警告添加配置
打开生成的workspace
此时编译运行 能正常启动,提示“未配置APPKey”
接下来,按照阿里云SDK文档的要求在 Podfile中添加配置 ,文档地址:https://help.aliyun.com/document_detail/266770.html
在第一行添加
source 'https://github.com/aliyun/aliyun-specs.git'
在 # Pods for HBuilder 下一行添加
pod 'IMSLinkVisualMedia_Base', '1.5.10'
再次执行 pod install
成功后编译运行,然后崩溃。
以上是使用cocoapods集成的情况。即使不用这种方式,改为手动添加framework也是一样的结果。
阿里云SDK framework下载地址:https://ios-repo.oss-cn-shanghai.aliyuncs.com/ims_linkvisual_media_base/1.5.10/ims_linkvisual_media_base.zip
预期结果:
成功启动
实际结果:
崩溃
bug描述:
我正在开发原生插件。
iOS 端在集成阿里云物联网视频服务SDK后无法启动,会立刻崩溃。
更多关于uni-app 原生插件开发 iOS 端集成阿里云物联网视频服务SDK后无法启动立刻崩溃的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个不是官方bug,是你插件问题
更多关于uni-app 原生插件开发 iOS 端集成阿里云物联网视频服务SDK后无法启动立刻崩溃的实战教程也可以访问 https://www.itying.com/category-93-b0.html
能否明示,感谢
是不是用到了百度地图 但是没有按照文档 集成相应的资源文件和库
没用百度地图,就官方的demo上加阿里的SDK
回复 b***@foxmail.com: 你找一下 你本地的 Feature.plist 文件 看一下Map节点下 是不是有百度的配置
回复 天生DR: 是有的,我应该删除它吗?
回复 天生DR: 我删除了,可以正常启动了,可是为什么在我没有添加阿里的 SDK 的时候可以正常启动,添加之后就不行了呢,我感觉还是 uniapp 离线 SDK 有 bug
回复 b***@foxmail.com: 应该是 百度地图用了openssl 阿里这个是不是也用了啊 两个库撞了 你不需要的库和资源 就移除了 工程里的.a .framework 也是这样
在 uni-app
原生插件开发中,集成阿里云物联网视频服务 SDK 后,iOS 端应用启动时立刻崩溃,可能是由于以下原因导致的。以下是一些常见的排查步骤和解决方案:
1. 检查 SDK 依赖
阿里云物联网视频服务 SDK 可能依赖一些第三方库或系统框架。确保所有必要的依赖都已正确添加到项目中。
- 步骤:
- 打开 Xcode 项目。
- 检查
Linked Frameworks and Libraries
中是否包含所有 SDK 所需的库(如libc++.tbd
、libz.tbd
等)。 - 确保
Build Phases
->Link Binary With Libraries
中已添加所有必要的框架。
2. 检查 SDK 初始化
SDK 可能需要在应用启动时进行初始化,如果初始化失败,可能会导致崩溃。
- 步骤:
- 检查 SDK 的文档,确认是否需要调用初始化方法。
- 在
AppDelegate
的application:didFinishLaunchingWithOptions:
方法中,确保正确初始化 SDK。
3. 检查权限配置
阿里云物联网视频服务 SDK 可能需要访问摄像头、麦克风等权限。如果权限未配置,可能会导致崩溃。
- 步骤:
- 在
Info.plist
中添加以下权限:<key>NSCameraUsageDescription</key> <string>需要访问摄像头以使用视频功能</string> <key>NSMicrophoneUsageDescription</key> <string>需要访问麦克风以使用音频功能</string>
- 确保在应用启动时请求权限。
- 在
4. 检查 SDK 版本兼容性
确保使用的 SDK 版本与 uni-app
和 iOS 系统版本兼容。
- 步骤:
- 检查 SDK 的官方文档,确认支持的 iOS 版本。
- 确保 Xcode 的
Deployment Target
设置与 SDK 要求一致。
5. 查看崩溃日志
通过 Xcode 或设备日志查看崩溃的具体原因。
- 步骤:
- 连接设备到 Xcode。
- 运行应用,查看控制台输出的崩溃日志。
- 根据日志中的错误信息(如
EXC_BAD_ACCESS
、unrecognized selector
等)进行排查。
6. 检查原生插件代码
确保原生插件的代码正确集成 SDK,并且没有逻辑错误。
- 步骤:
- 检查插件中调用 SDK 的代码,确保参数和方法正确。
- 如果使用 Objective-C 和 Swift 混编,确保桥接文件(
Bridging-Header.h
)配置正确。
7. 清理和重新构建
有时 Xcode 的缓存可能导致问题,尝试清理并重新构建项目。
- 步骤:
- 在 Xcode 中选择
Product
->Clean Build Folder
。 - 重新运行项目。
- 在 Xcode 中选择
8. 联系阿里云技术支持
如果以上方法无法解决问题,可以联系阿里云技术支持,提供崩溃日志和复现步骤,获取更专业的帮助。
示例代码
以下是一个简单的 SDK 初始化和权限请求示例:
#import <AliyunIoT/AliyunIoT.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 初始化 SDK
[AliyunIoT initializeSDK];
// 请求权限
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {
if (!granted) {
NSLog(@"摄像头权限未授权");
}
}];
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) {
if (!granted) {
NSLog(@"麦克风权限未授权");
}
}];
return YES;
}