当前位置: 首页 > article >正文

Android加载SO包

一、前言

这几天用Android整合开源的RTMP推拉流都没成功,好几年没玩Android了碰到好多坑,在Android中为了效率难免需要调用C语言编写生成的SO文件,比如图片渲染加速,视频编解码等插件,今天我们就先聊一下在Android中如何加载SO文件。

二、Android手机CPU架构

1、Android系统支持的CPU架构

  • armeabi:第五代、第六代ARM处理器,使用软件浮点运算,很古老的手机是这架构。

  • armeabi-v7a:第七代ARM处理器,使用硬件浮点运算,2018年以前手机主流架构。

  • arm64-v8a:第八代64位处理器,当前主流架构。

  • x86/x86-64:平板和Android模拟器用得比较多。

每一种CPU架构对应一个ABI,ABI定义了二进制文件(比如SO)如何运行在相应的系统平台。

2、如查查看手机的CPU架构

USB连上手机打开开发者模式

# adb shell    

查看CPU架构  

# getprop ro.product.cpu.abi

小米11青春版   arm64-v8a

AndroidStudio自带模拟器   x86

三、Android Studio配置加载SO

build.gradle

android {
  defaultConfig {
    ndk {
abiFilters "armeabi",'x86', 
'armeabi-v7a', 'armeabi-v8a',
'arm64-v8a'
     }
   }
   sourceSets {
     main {
       jniLibs.srcDirs = ['jniLibs']
     }
   }
}

so文件目录结构

如果你的代码要直接调用SO中的方法,需要LoadLibray加载包并且定义native方法。

注:上面例子我是引入vitamio开源想实验一下RTMP拉流播放,现在SO库是能正常加载了,但播放不了,报错误信息如下,估计是SO版本的兼容性。

另:如果有人对Android的RTMP推拉流开源比较熟悉推荐一个简单易用可以快速整合到自己项目里的,直接用底层 ffmpeg库去玩太难了,我只想稍微玩一把就好。


http://www.kler.cn/a/105445.html

相关文章:

  • ElasticSearch中关于Nasted嵌套查询的介绍:生动案例,通俗易懂,彻底吸收
  • MySQL 多表查询 事务 索引
  • van-uploader上传图片报错Invalid handler for event “load“(在uniapp编译)
  • 矿用电机车直接转矩控制技术研究
  • 动态组件<component>
  • 【概率论教程01】对贝叶斯定理的追忆
  • mongodb数据迁移的方法
  • Linux ———— 用户-组
  • 0基础学习PyFlink——用户自定义函数之UDAF
  • Android开发基础:SharedPreferences的使用
  • HarmonyOS鸿蒙原生应用开发设计- 流转图标
  • menuconfig 图形化配置原理说明三
  • 【经验分享】openGauss容灾集群搭建
  • android开发使用OkHttp自带的WebSocket实现IM功能
  • 了解神经网络
  • python:使用Flask-SQLAlchemy对数据库增删改查的简单示例
  • YouTrack 中如何设置邮件通知
  • 非小米笔记本小米妙享中心安装最新教程 3.2.0.464 兼容所有Windows系统
  • 13.4web自动化测试(Selenium3+Java)
  • [SpringCloud] Eureka 与 Ribbon 简介