鸿蒙加载第三方动态链接库(.so)文件

本文介绍了在鸿蒙系统上遇到Java.lang.UnsatisfiedLinkError错误的解决方案,强调了在Android与鸿蒙系统中处理.so文件的不同之处。在Android中,只需将.so文件放入jniLibs目录,而在鸿蒙系统中,需要在libs目录下为不同架构创建arm64-v8a和armeabi-v7a文件夹,并在build.gradle文件中添加.so文件描述。同时,文中提到在使用动态链接库时,需要在相应代码中加载库,如System.loadLibrary(paddle_lite_jni)。
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.android.wincentcar-58U7Y45PmvJ6HkcbAnaufA==/base.apk", zip file "/data/app/com.android.wincentcar-58U7Y45PmvJ6HkcbAnaufA==/feature_entry-debug-rich-unsigned.hap"],nativeLibraryDirectories=[/data/app/com.android.wincentcar-58U7Y45PmvJ6HkcbAnaufA==/lib/arm64, /system/lib64, /hw_product/lib64, /system/product/lib64, /system/lib64/module/multimedia]]] couldn't find "libpaddle_lite_jni.so"

在没有正确引用so文件情况下会报出上述错误,正确姿势应该如下

在Android的写法是在main目录下创建jniLibs,然后.so文件复制进去即可,但是在鸿蒙里面要在libs/内放置arm64-v8a和armeabi-v7a两个文件夹的so文件,然后在build.gradle文件 加多一个.so的描述

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar', '*.har', '*.so'])
最后在使用到动态链接库的目录下添加loadLibrary
static {
    System.loadLibrary("paddle_lite_jni");
}

即可使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值