常见问题

更新时间:2025-06-11 08:45:27下载pdf

各类版本问题

1. Xcode 11 为什么找不到 Application Loader?

从 Xcode 11 开始,不再内置 Application Loader。苹果官方推出了一个新的 ipa 上传工具,您可以直接在 Mac 应用商店搜 Transporter 进行 ipa 上传。

2. 执行 pod install 为什么会报错?

  • 请确认 CocoaPods 为 v1.3.0 及以上版本,执行 pod --version 命令可查看版本。

  • 如果出现提示 Unable to find compatibility version string for object version,是因为 Xcode 创建的新项目中的 project.pbxproj 文件版本过高,而 CocoaPods 由于停止维护,仅支持版本 63。要解决此问题,请打开项目中的 YourProject.xcodeproj/project.pbxproj 文件,将 objectVersion = 70 修改为 objectVersion = 63

    错误信息示例:

    /Library/Ruby/Gems/2.6.0/gems/xcodeproj-1.27.0/lib/xcodeproj/project.rb:85:in `initialize': [Xcodeproj] Unable to find compatibility version string for object version `70`. (ArgumentError)
    
  • 如果遇到 glog 集成报错,这是由于 Xcode 16.3 兼容性问题所导致。解决方法是使用 CURRENT_ARCH=arm64 pod install 命令进行安装。

    错误信息示例:

    /Users/aurusit/Library/Caches/CocoaPods/Pods/Release/glog/0.3.4-1de0b/missing: Unknown `--is-lightweight' option
    Try `/Users/aurusit/Library/Caches/CocoaPods/Pods/Release/glog/0.3.4-1de0b/missing --help' for more information
    

3. 执行 pod install 时,为什么提示 CDN: trunk Repo update failed / trunk URL couldn't be downloaded

CocoaPods v1.8.0 版本默认使用 CDN Repo 源。详情请访问 CocoaPods

如果您因为网络原因无法访问源,可以编辑 Podfile 修改为之前的 Master Repo:

- source 'https://cdn.cocoapods.org/'
+ source 'https://github.com/CocoaPods/Specs.git'

4. iOS 12 使用 [[ThingSmartActivator sharedInstance] currentWifiSSID] 为什么无法获取到 SSID?

在 Xcode 10 中,获取 Wi-Fi 信息需要开启相关权限。解决方法:Xcode > [Project Name] > Targets > [Target Name] > Capabilities > Access WiFi Information > ON

常见问题

5. iOS 13 版本有哪些 SDK 权限变化?

详情请参考 iOS 版本适配

6. 为什么升级 SDK 至 v2.8.0 及以上版本,SDK 初始化后发生 App 闪退?

SDK v2.8.0 版本之后加入了安全图片校验,并启用了新的 AppKeyAppSecret。如果发生了 App 闪退,并提示 Terminating app due to uncaught exception 'start sdk error', reason: 'security image not found',请按照 准备工作 前往涂鸦开发者平台重新生成 SDK 初始化所需文件。

SDK 使用问题

1. 下发控制指令,设备为什么没有上报状态?

请确认设备功能的数据类型是否正确。例如,如果设备功能的数据类型是数值型(Value),那控制命令发送的应该是 @{@"2": @(25)} 而不是 @{@"2": @"25"}

2. 如何开启调试模式,打印日志?

请在初始化 SDK 之后,调用以下代码:

[[ThingSmartSDK sharedInstance] setDebugMode:YES];

3. 基于 SDK 开发的 App,上传了推送证书,为什么收不到推送信息?

  1. 确认 Xcode 的 Push Notification 是否打开。
  2. 涂鸦开发者平台 上传 Push 证书。
  3. didFinishLaunchingWithOptions 方法中初始化 Push 方法。
  4. 涂鸦开发者平台营销推送 页面,新建 App 消息推送。

更多详情,请参考 集成 Push

4. 为什么 SDK 获取本地语言为英文,而不是手机系统的语言?

因为 SDK 现在获取的本地语言是根据 [[NSBundle mainBundle] preferredLocalizations] 获取的,您需要在工程中创建多语言显示。

5. SDK 是否支持红外设备控制?

现在 SDK 不支持红外设备控制。

6. 为什么设备控制合并发送了多个设备功能(dps),却没有收到所有的设备功能响应?

设备控制发送多个功能时,您需要先判断设备功能是否有冲突。建议将没功能冲突的功能放在一起发送。例如照明的设备:

  • 可以把灯的亮度、冷暖设备功能放在一起发送。
  • 不可以把开关、亮度,冷暖 3 个设备功能放在一起,否则会存在有些设备功能执行没有响应的问题。

7. 如果没有蓝牙功能,是否可以不依赖 SDK 蓝牙模块,减少包大小?

可以的。此时只需要设备配网和控制功能,可以只依赖以下两个模块:

# 家庭管理,设备,房间,群组管理相关功能
pod 'ThingSmartDeviceKit',
# 设备配网相关功能
pod 'ThingSmartActivatorKit',

以下模块可以根据您的实际需要引用:

# 单点蓝牙相关功能
pod 'ThingSmartBLEKit',
# sigMesh 相关功能
pod 'ThingSmartBLEMeshKit',
# 智能场景相关功能
pod 'ThingSmartSceneKit',
# 设备和群组定时相关功能
pod 'ThingSmartTimerKit',
# 消息中心相关功能
pod 'ThingSmartMessageKit',
# 问题反馈相关功能
pod 'ThingSmartFeedbackKit',

SDK 运行报错

1. SDK 为什么集成错误,显示 Undefined symbols xxx

一般是由于引用的 SDK 各个组件版本不一致导致。

请确认引用的每个库是否都是统一版本,即版本号的最高位和中位一致,例如 v3.12.1 和 v3.12.5 是统一的版本。如果不是,使用 pod update 进行更新后,重新编译即可。

2. 为什么调用 SDK 接口以后,会报 Error Domain=NSURLErrorDomain Code=-999 "已取消" 的错误?

请确认请求的对象是全局变量,否则会被提早释放,例如 self.feedBack = [[ThingSmartFeedback alloc] init];

3. 为什么提示签名错误?

请确认 bundleIdappKeyappSecret安全图片 是否与 涂鸦开发者平台 上的信息一致,任意一个不匹配都将校验失败。更多详情,请参考 准备工作

4. Demo 编译为什么失败,提示 library not found for -XXX

请确认您打开的工程为 .xcworkspace 而不是 .xcproject

5. M1 芯片的电脑编译 iOS 为什么报错 Undefined symbols for architecture arm64

报错示例

Undefined symbols for architecture arm64:
"OBJC_CLASS$ThingAudioEngine", referenced from:
objc-class-ref in ThingSpeechKit(ThingSpeechVADetector.o)
"OBJC_CLASS$ThingSceneIntent", referenced from:
objc-class-ref in ThingSiriShortcutModule(ThingSceneShortcutManager.o)
"OBJC_CLASS$_DWKWebView", referenced from:
objc-class-ref in ThingHybridContainer(ThingHybridContainerVC.o)
ld: symbol(s) not found for architecture arm64.

解决方法

  1. 在 Podfile 文件里添加以下代码。

    post_install do |installer|
        installer.pods_project.build_configurations.each do |config|
            config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64"
        end
    end
    
  2. 在 XCode 的 Build Settings > Excluded Architectures 路径下,增加 Any iOS Simulator SDK 选项,值为 arm64

  3. 重新执行 pod install

6. Xcode 编译错误 Sandbox: rsync(37019) deny(1)

此错误是由于在 Xcode 14 中引入的用户脚本沙盒机制导致的。沙盒机制限制了某些文件操作,例如通过 rsync 进行文件复制或移动操作。当这些操作尝试访问受限路径时,会出现 Operation not permitted 的警告。这通常是因为 Xcode 的新限制造成的,特别是在处理某些第三方库或 framework 的 intermediates 文件时。

要解决此问题,请导航到 Xcode 中的 TARGETS,打开 Build Settings,搜索 User Script Sandboxing,并将其值设置为 NO。这将禁用用户脚本的沙盒限制。

错误信息示例:

rsync(37019): error: /Users/sunjiting/Test4/DerivedData/Test4/Build/Products/Debug-iphoneos/XCFrameworkIntermediates/ThingMbedtls/ThingMbedtls.framework/Info.plist: open (2) in /Users/sunjiting/Test4: Operation not permitted
ThingMbedtls.framework/ThingMbedtls
rsync(37020): error: mkstempat: 'ThingMbedtls.framework/.ThingMbedtls.5ktlDX4TOz': Operation not permitted