鸿蒙智能手表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 架构
- 使用以下命令
adb shell getprop ro.product.cpu.abi
- 得到
x86_64
- 在build.gradle加上
x86_64
的配置
externalNativeBuild {
path "src/main/cpp/CMakeLists.txt"
arguments ""
abiFilters "arm64-v8a", "x86_64"
cppFlags ""
}
- Local Emulator运行JNI代码正常
查看Remote Emulator的cpu 架构
- 使用以下命令
adb shell getprop ro.product.cpu.abi
- 得到
armeabi-v7a
- 在build.gradle加上
x86_64
的配置
externalNativeBuild {
path "src/main/cpp/CMakeLists.txt"
arguments ""
abiFilters "arm64-v8a", "x86_64", "armeabi-v7a"
cppFlags ""
}
- Remote Emulator运行JNI代码正常
生成&引用so文件
- builder -》Rebuild Project即可,或者Make Module 'xxx',或者使用gradle命令
- 可在,build -》intermediates -》libs下,看到对应的debug和relase包
- 把对应的
arm64-v8a
,x86_64
,armeabi-v7a
文件夹拷贝到libs(与src文件夹同目录)文件夹下 - build.gradle添加
*.so
,如下:
implementation fileTree(dir: 'libs', include: ['*.jar', '*.so'])
P.S:当然直接引用so的module lib也是可以的;打包hap的话,也可在hap包里看到对应的so文件