查看so库中报错信息
1.报错log如下
如libFpCollect.so为自己编译运行的so文件,需定位具体的错误信息。
2.使用工具
使用ndk中自带的文件程序,路径为android-ndk-r13b\toolchains
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QbYDOdMz-1609831295857)(https://i.imgur.com/kPWAJPQ.png)]
aarch64-linux-android-4.9:so库为arm架构 64位
arm-linux-androideabi-4.9:so库为arm架构 32位
mips64el-linux-android-4.9:so库为mips架构 64位
mipsel-linux-android-4.9:so库为mips架构 32位
x86_64-4.9:so库为x86架构 64位
x86-4.9:so库为x86架构 32位
根据所生成的so的架构平台不同,选择不同的架构平台文件夹里的文件程序,如我这里的so文件架构是arm 32位的,所以选择arm-linux-androideabi-4.9里的文件程序
如何判断是32位还是64位?
可根据报错log中pc字段后的数字个数**“000422e0”**,如为8个,是32位的;如为16个,是64位的。
3.工具使用
打开cmd命令行,输入命令:aarch64-linux-android-addr2line.exe文件路径 -Cfape debug的so文件路径 0x+错误log数字
aarch64-linux-android-addr2line.exe文件路径:android-ndk-r13b\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin\aarch64-linux-android-addr2line.exe
-Cfape:命令行参数
debug的so文件路径:此so文件需要是编译的debug类型的文件,是路径在obj\local下的文件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U72N1Gco-1609831295862)(https://i.imgur.com/TBr509r.png)]
编译出的so库,在libs下的为release版本
在obj/local下的为debug版本,想看so库错误信息需使用obj/local下的so文件
0x+错误log数字:错误log数字前需加**0x**
4.命令行运行
J:\Android\android-sdk\ndk-bundle\toolchains\arm-linux-androideabi-4.9\prebuilt\windows-x86_64\bin\arm-linux-androideabi-addr2line.exe -Cfape F:\asWorkPlace\Android\apk\JniCollectNav\app\src\main\obj\local\armeabi-v7a\libFpCollect.so 0x000422e0
结果为: