You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

集成Android Tuya SDK遇“找不到DSO加载libc.so”错误求助

排查Tuya Smart SDK 3.26.5的UnsatisfiedLinkError(找不到libc++_shared.so/libc.so)

问题背景

使用Tuya Smart SDK构建Android应用时,初始化阶段抛出以下错误:

java.lang.UnsatisfiedLinkError: couldn't find DSO to load: libc++_shared.so
caused by: couldn't find DSO to load: libc.so
at com.facebook.soloader.SoLoader.doLoadLibraryBySoName(SoLoader.java:789)
at com.facebook.soloader.SoLoader.loadLibraryBySoName(SoLoader.java:639)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:577)
at com.facebook.soloader.SoLoader.loadLibrary(SoLoader.java:525)
at com.tuya.smart.security.load.TuyaLibraryLoader.securityLoadLibrary(TuyaLibraryLoader.java:17)
at com.tuya.smart.security.jni.JNICLibrary.doCommandNative(JNICLibrary.java:9)
at com.tuya.sdk.network.OooO00o.OooO00o(TuyaNetworkSecurityInit.java:1)
at com.tuya.smart.android.network.TuyaSmartNetWork.initialize(TuyaSmartNetWork.java:35)
at com.tuya.smart.sdk.TuyaSdk.initTuyaData(TuyaSdk.java:74)
at com.tuya.smart.sdk.TuyaSdk.init(TuyaSdk.java:146)
at com.tuya.smart.sdk.TuyaSdk.init(TuyaSdk.java:57)
[my code]

使用的依赖:

implementation("com.tuya.smart:tuyasmart:3.26.5")

已尝试操作:

  • 调用TuyaHomeSdk.setDebugMode(true)开启调试模式
  • 确认libc++_shared.so由Tuya SDK依赖提供,libc.so为系统自带库

排查步骤

1. 检查ABI过滤配置

Tuya SDK仅提供部分架构的so库,若应用设置了ABI过滤,可能导致对应架构的libc++_shared.so缺失:

  • 打开Module级build.gradle,检查ndk.abiFilters配置,确保包含Tuya支持的ABI(通常为armeabi-v7a、arm64-v8a):
    android {
        defaultConfig {
            ndk {
                abiFilters "armeabi-v7a", "arm64-v8a"
            }
        }
    }
    

2. 调整SoLoader初始化顺序

Tuya SDK依赖Facebook SoLoader加载库,需确保SoLoader在TuyaSdk之前初始化:

  • 在自定义Application的onCreate()中修改初始化顺序:
    @Override
    public void onCreate() {
        super.onCreate();
        SoLoader.init(this, false);
        TuyaHomeSdk.init(this);
    }
    

3. 排查依赖冲突

  • 执行./gradlew app:dependencies查看依赖树,确认是否有其他库覆盖或移除了libc++_shared.so
  • 若存在冲突,可强制依赖Tuya SDK关联的SoLoader版本:
    configurations.all {
        resolutionStrategy.force "com.facebook.soloader:soloader:对应版本" // 从依赖树中获取Tuya关联的版本号
    }
    

4. 验证设备系统兼容性

libc.so为系统库,老旧Android版本(API 21及以下)可能存在路径或版本兼容问题:

  • 测试设备是否为Android 5.0(API 21)及以上,Tuya SDK 3.26.5对低版本系统支持有限
  • 若需支持低版本,可在build.gradle中启用旧版打包规则:
    android {
        packagingOptions {
            useLegacyPackaging = true
        }
    }
    

5. 检查APK中的so库是否存在

  • 构建APK后解压,查看lib/[abi]/目录下是否有libc++_shared.so
  • 若缺失,执行./gradlew clean build清理缓存后重新构建

6. 临时调试用:禁用SoLoader严格模式(仅测试)

若以上方法无效,可临时跳过SoLoader部分检查(正式发布需移除):

SoLoader.setInTestMode();

额外说明

虽然3.36.5版本需要额外签名,但该版本修复了大量底层兼容性问题。若以上排查均无效,建议先完成签名验证再升级版本,避免后续遇到更多类似问题。

内容的提问来源于stack exchange,提问作者Simone Avogadro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 18:50:13