Android集成soundtouch库报错:找不到libsoundtouch.so
解决Android集成SoundTouch库时
libsoundtouch.so找不到的问题 核心问题
你的.so文件未被Gradle正确打包进最终APK,导致运行时无法加载。以下是针对性解决步骤:
步骤1:统一.so文件存放目录
Android默认优先识别src/main/jniLibs目录下的Native库,建议你:
- 将
soundtouch/libs目录下所有架构的libsoundtouch.so移动到soundtouch/src/main/jniLibs对应的架构目录中 - 删除
soundtouch/libs目录,避免Gradle识别混淆
步骤2:配置SoundTouch模块的build.gradle
在soundtouch模块的build.gradle的android块中添加以下配置,确保Gradle能正确识别Native库:
android { defaultConfig { // 指定需要支持的CPU架构,和你的.so文件架构对应 ndk { abiFilters 'armeabi-v7a', 'arm64-v8a' } } // 配置jniLibs目录(如果默认目录被修改时需要) sourceSets { main { jniLibs.srcDirs = ['src/main/jniLibs'] } } // 配置ndk-build脚本路径(如果你用ndk-build编译.so) externalNativeBuild { ndkBuild { path file('jni/Android.mk') // 指向你的Android.mk文件路径 } } }
步骤3:检查App模块的build.gradle配置
确保app模块的defaultConfig中没有排除你需要的架构:
android { defaultConfig { ndk { // 不要设置成不包含armeabi-v7a/arm64-v8a的配置 abiFilters 'armeabi-v7a', 'arm64-v8a' } } }
步骤4:清理并重建项目
执行以下命令彻底清理缓存并重新构建:
./gradlew clean ./gradlew assembleDebug
构建完成后,解压APK检查lib目录下是否包含对应架构的libsoundtouch.so文件。
步骤5:确认加载库的代码正确
确保你的SoundTouch.java中加载库的代码是:
static { System.loadLibrary("soundtouch"); // 不要加"lib"前缀或".so"后缀 }
内容的提问来源于stack exchange,提问作者Rohit gupta
相关产品推荐
相关产品推荐

