IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> NDK报错问题分析方案(一) -> 正文阅读

[移动开发]NDK报错问题分析方案(一)

  • 前言:
    • 准备系统性的练习一下Ffmpeg框架,在此之前运行电脑上旧demo,运行过程中遇到两个问题。这两个问题非常常见,在此就干脆记录一下。

一.问题一-couldn’t find “libxxx-lib.so”

Process: com.xxx.xxxx, PID: 20866
    java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.xxx.xxxxx-EGmEBSamMJX987Fr07EMuA==/base.apk"],
nativeLibraryDirectories=[/data/app/com.xxx.xxxxx-EGmEBSamMJX987Fr07EMuA==/lib/arm64, 
/system/lib64, /hw_product/lib64, /system/product/lib64, /prets/lib64]]] couldn't find "libnative-lib.so"
  • 找不到xxx.so库
  • 思路分析
    • 1.先排除缓存的问题,clear一下重试,确认问题存在,继续步骤2;

    • 2.查看app->build->outputs->debug->app-debug.apk文件,双击查看lib文件夹下是否有对应的so文件生成。若不存在,继续步骤3;
      在这里插入图片描述

    • 3.查看module的build.gradle文件,是否添加了类似下面的配置,xxx1,xxx2,xxx3表示Android设备的CPU类型(如:arm64-v8a、armeabi-v7a、x86_64、x86等)

      ndk {
      	abiFilters  "xxx1","xxx2","xxx3"
      }
      

      添加后对比上图查看,so文件已经生成
      在这里插入图片描述
      so文件未编译到apk中,原因不止步骤3的一种,这里只是提供了一种分析的思路(步骤1不可以忽视,个人觉得很重要),若确定so文件未编译到apk中,可以进一步搜索(网上文章比较多)排查其它导致so未编译进入apk的原因。

二.问题二-native层代码报错

  • 2.1.错误信息如下
    在这里插入图片描述
  • 2.2.定位报错代码的思路
    • 2.2.1.借助ndk的工具,如下图
      在这里插入图片描述
  • 2.2.2.找到下图所示so文件的文件夹,如:C:xxx\app\build\intermediates\cmake\debug\obj\armeabi-v7a
    在这里插入图片描述
  • 2.2.3.输入命令,定位报错信息
#打开命令行窗口,进入2.2.1中提到的文件夹目录,执行模板命令
aarch64-linux-android-addr2line -e C:xxx\app\build\intermediates\cmake\debug\obj\armeabi-v7a.so 000bca13
  • 其中000bca13是根据2.1图示的提示进行输入的,以backtrace:为起点往下查看,#00和#01都是跟项目源代码没有关联的,而#03存在关联,这里对应就是000bca13,找到后按照上面的模板命令进行更改即可。
  • 定位出报错信息在C:xxx\app\src\main\cpp\native-lib.cpp文件第28行,根据实际情况进行修改即可。
    在这里插入图片描述
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-08-06 10:55:38  更:2022-08-06 10:57:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 4:17:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码