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

无法找到librenderscript-toolkit.so引发UnsatisfiedLinkError崩溃求助

原生库崩溃问题:找不到librenderscript-toolkit.so

问题详情

  • 应用运行时触发java.lang.UnsatisfiedLinkError崩溃,提示无法找到librenderscript-toolkit.so原生库
  • 已将相关库作为模块导入项目,推测NDK配置存在遗漏
  • 崩溃堆栈信息:
Fatal Exception: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/photocollage.photoeditor.layout.collagemaker.photo.grid-26CYJoq73H483tupCrzMjg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.app-26CYJoq73H483tupCrzMjg==/lib/arm64, /system/lib64, /hw_product/lib64, /system/product/lib64]]] couldn't find "librenderscript-toolkit.so"
       at java.lang.Runtime.loadLibrary0(Runtime.java:1067)
       at java.lang.Runtime.loadLibrary0(Runtime.java:1007)
       at java.lang.System.loadLibrary(System.java:1668)
       at com.google.android.renderscript.Toolkit.<clinit>(Toolkit.kt:1097)
       at FragmentABC.updateBlurBg(FragmentABC.kt:353)
       at FragmentABC.updateBlurBg$default(FragmentABC.kt:351)
       at FragmentABC.initBlurBg(FragmentABC.kt:334)
       at FragmentABC.checkDefaultSettings(FragmentABC.java:316)
       at FragmentABC.access$checkDefaultSettings(FragmentABC.java:56)
       at FragmentABC$initCollage$1.onGlobalLayout(FragmentABC.kt:308)
       at android.view.ViewTreeObserver.dispatchOnGlobalLayout(ViewTreeObserver.java:1056)
       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2858)
       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1876)
       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8167)
       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1057)
       at android.view.Choreographer.doCallbacks(Choreographer.java:875)
       at android.view.Choreographer.doFrame(Choreographer.java:776)
       at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1042)
       at android.os.Handler.handleCallback(Handler.java:900)
       at android.os.Handler.dispatchMessage(Handler.java:103)
       at android.os.Looper.loop(Looper.java:219)
       at android.app.ActivityThread.main(ActivityThread.java:8349)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

解决方法

1. 配置NDK支持的ABI架构

在app模块的build.gradle文件中,明确指定NDK需要支持的ABI,确保包含崩溃设备对应的架构(如堆栈中的arm64-v8a):

android {
    defaultConfig {
        ndk {
            abiFilters 'arm64-v8a', 'armeabi-v7a' // 根据需求添加其他架构(如x86、x86_64)
        }
    }
}

2. 确认模块的原生库打包配置

如果是手动导入的库模块,检查模块的build.gradle是否正确指定了原生库的存放路径:

android {
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs'] // 指向模块内存放.so文件的目录
        }
    }
}

若使用aar格式的模块,解压aar文件确认jni/[abi]/目录下存在librenderscript-toolkit.so。

3. 清理重建项目

执行以下Gradle命令清理缓存并重新构建,确保原生库被正确打包进APK:

./gradlew clean
./gradlew assembleDebug

4. 验证APK中的原生库

解压构建生成的APK文件,查看lib/[abi]/目录下是否存在librenderscript-toolkit.so。如果缺失,说明打包过程未包含该库,需重新检查模块依赖和配置。

5. 启用Renderscript支持(若依赖AndroidX Renderscript)

在app模块的build.gradle中添加Renderscript相关配置:

android {
    defaultConfig {
        renderscriptTargetApi 33 // 适配项目的目标API级别
        renderscriptSupportModeEnabled true
    }
}

内容的提问来源于stack exchange,提问作者Sohaib Ahmed

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:15:41