鸿蒙智能手表Wearable使用JNI报找不到so文件

2023-07-24  本文已影响0人  hongzhenw

当使用鸿蒙手机调试好JNI代码后,在Dev Studio Device Manager提供的Local Emulator和Remote Emulator上均崩溃。

难道在手机上可以使用JNI,智能手表不支持?先说答案,是支持的。

Dev Studio默认创建的是arm64-v8a,需要添加对应设备的cpu架构即可

查看Local Emulator的cpu 架构
  1. 使用以下命令
adb shell getprop ro.product.cpu.abi
  1. 得到
x86_64
  1. 在build.gradle加上x86_64的配置
externalNativeBuild {
    path "src/main/cpp/CMakeLists.txt"
    arguments ""
    abiFilters "arm64-v8a", "x86_64"
    cppFlags ""
}
  1. Local Emulator运行JNI代码正常
查看Remote Emulator的cpu 架构
  1. 使用以下命令
adb shell getprop ro.product.cpu.abi
  1. 得到
armeabi-v7a
  1. 在build.gradle加上x86_64的配置
externalNativeBuild {
    path "src/main/cpp/CMakeLists.txt"
    arguments ""
    abiFilters "arm64-v8a", "x86_64", "armeabi-v7a"
    cppFlags ""
}
  1. Remote Emulator运行JNI代码正常
生成&引用so文件
  1. builder -》Rebuild Project即可,或者Make Module 'xxx',或者使用gradle命令
  2. 可在,build -》intermediates -》libs下,看到对应的debug和relase包
  3. 把对应的arm64-v8ax86_64armeabi-v7a文件夹拷贝到libs(与src文件夹同目录)文件夹下
  4. build.gradle添加*.so,如下:
implementation fileTree(dir: 'libs', include: ['*.jar', '*.so'])

P.S:当然直接引用so的module lib也是可以的;打包hap的话,也可在hap包里看到对应的so文件

上一篇下一篇

猜你喜欢

热点阅读