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

9 回复

这个不是官方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 可能依赖一些第三方库或系统框架。确保所有必要的依赖都已正确添加到项目中。

  • 步骤
    1. 打开 Xcode 项目。
    2. 检查 Linked Frameworks and Libraries 中是否包含所有 SDK 所需的库(如 libc++.tbdlibz.tbd 等)。
    3. 确保 Build Phases -> Link Binary With Libraries 中已添加所有必要的框架。

2. 检查 SDK 初始化

SDK 可能需要在应用启动时进行初始化,如果初始化失败,可能会导致崩溃。

  • 步骤
    1. 检查 SDK 的文档,确认是否需要调用初始化方法。
    2. AppDelegateapplication:didFinishLaunchingWithOptions: 方法中,确保正确初始化 SDK。

3. 检查权限配置

阿里云物联网视频服务 SDK 可能需要访问摄像头、麦克风等权限。如果权限未配置,可能会导致崩溃。

  • 步骤
    1. Info.plist 中添加以下权限:
      <key>NSCameraUsageDescription</key>
      <string>需要访问摄像头以使用视频功能</string>
      <key>NSMicrophoneUsageDescription</key>
      <string>需要访问麦克风以使用音频功能</string>
      
    2. 确保在应用启动时请求权限。

4. 检查 SDK 版本兼容性

确保使用的 SDK 版本与 uni-app 和 iOS 系统版本兼容。

  • 步骤
    1. 检查 SDK 的官方文档,确认支持的 iOS 版本。
    2. 确保 Xcode 的 Deployment Target 设置与 SDK 要求一致。

5. 查看崩溃日志

通过 Xcode 或设备日志查看崩溃的具体原因。

  • 步骤
    1. 连接设备到 Xcode。
    2. 运行应用,查看控制台输出的崩溃日志。
    3. 根据日志中的错误信息(如 EXC_BAD_ACCESSunrecognized selector 等)进行排查。

6. 检查原生插件代码

确保原生插件的代码正确集成 SDK,并且没有逻辑错误。

  • 步骤
    1. 检查插件中调用 SDK 的代码,确保参数和方法正确。
    2. 如果使用 Objective-C 和 Swift 混编,确保桥接文件(Bridging-Header.h)配置正确。

7. 清理和重新构建

有时 Xcode 的缓存可能导致问题,尝试清理并重新构建项目。

  • 步骤
    1. 在 Xcode 中选择 Product -> Clean Build Folder
    2. 重新运行项目。

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;
}
回到顶部