首页
学习
活动
专区
工具
TVP
发布

LiteAVSDK集成,动态加载so

二、动态加载so 随着项目业务越来越多,对APK 体积大小要求尽可能的瘦身,通常可以考虑采用在线加载的方式减少最终 apk 安装包的大小。...image.png 1、这三个so库必需要在本地加载。 image.png 2、这些so库需要按照如下顺序动态加载。...//sdk接口动态加载so TXLiveBase.setLibraryPath(newFilePath); //系统接口动态加载so loadLibrary(newFilePath, "YTCommon...解决办法就是:先把一个32位的so文件打进安装包,其它so库在运行时动态加载,这样App启动的是32位进程,动态加载so库也是32位版本,运行时就不再闪退。...五、资源 相关文章: LiteAVSDK商业版6.6+,安卓集成动态加载so 动态加载so库的实现方法与问题处理 Android 的 so 文件加载机制提问源码总结参考资料 demo下载

8.4K3510
您找到你想要的搜索结果了吗?
是的
没有找到

linux 动态加载_linux默认动态加载路径

当我们在linux系统引用动态库时,经常会遇到一个问题,加入我们需要的动态库没有在系统的默认目录下,我们编译时使用-L指定了动态库的路径,编译时没有问题,但是执行调用该动态库的可执行文件时,却提示找不到动态库...假设我们使用tensorflow,把需要调用的libtensorflow.so和libtensorflow_framework.so两个动态库放在我们和我们的程序同一级目录下。...library version %s\n”, TF_Version()); return 0; } 程序编译及结果如下: 可见程序编译没有问题,但是当执行可执行程序时,出现如下结果: 程序提示加载动态库失败...解决办法,使用-Wl,-rpath 所需动态库的路径 告诉程序如果在默认路径下找不到所需动态库,则去当前指定的路径下找动态库。...修改gcc编译指令后,结果如下: 可见,动态加载成功,程序运行成功,问题解决。 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

11.6K20

Android So动态加载 优雅实现与原理分析

背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载....在 Android 开发中调用动态链接库文件*.so都是通过 jni 的加载方式,一般的开发方式往往是在 apk 或 jar 包中调用so文件时,都要将对应 so 文件打包进 apk 或 jar 包。...如果项目native库很多,还支持各种平台,为了减少apk size,so动态下发,按需加载是不错的选择。比如x86库服务器下发,动态加载,瘦身效果将非常可观。...的加载流程 So热修复技术介绍及如何动态加载So 这里先做下准备工作 Android源码在线浏览:http://androidxref.com Android源码下载:https://source.android.com...总结: 到此处,那么so文件的动态加载(也可以叫做So文件的热修复)已经介绍完了,起始还是比较简单的,只是修改了so文件列表的数组映射,加载了需要使用的真实的so文件.

5.4K64

Android 开发中如何动态加载 so 库文件

在 Android 开发中调用动态库文件(*.so)都是通过 jni 的方式,而静态加载往往是在 apk 或 jar 包中调用so文件时,都要将对应 so 文件打包进 apk 或 jar 包。...动态加载的优点 静态加载,不灵活,apk 包有可能大。所以采用动态加载 so 库文件,有以下几点好处: 灵活,so 文件可以动态加载,不是绑定死的,修改方便,so 库有问题,我们可以动态更新。...so 库文件很大的话,采用动态加载可以减少 apk 的包,变小。 其实我们常用第三方 so 库,单个可能没问题,如果多个第三方 so 库文件,同时加载可能会出现冲突,而动态加载就能够解决这一问题。...注意路径陷阱 动态加载 so 库文件,并不是说可以把文件随便存放到某个 sdcard 文件目录下,这样做既不安全,系统也加载不了。...那基本思路如下: 网络下载 so 文件到指定目录 从指定下载的目录复制 copy so文件到可动态加载的文件目录下,比如:/data/data/packagename/… 配置 gradle ,指定 cpu

4.9K101

Android So动态加载 优雅实现与原理分析

背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载....在 Android 开发中调用动态链接库文件*.so都是通过 jni 的加载方式,一般的开发方式往往是在 apk 或 jar 包中调用so文件时,都要将对应 so 文件打包进 apk 或 jar 包。...如果项目native库很多,还支持各种平台,为了减少apk size,so动态下发,按需加载是不错的选择。比如x86库服务器下发,动态加载,瘦身效果将非常可观。...的加载流程 So热修复技术介绍及如何动态加载So 这里先做下准备工作 Android源码在线浏览:http://androidxref.com Android源码下载:https://source.android.com...总结: 到此处,那么so文件的动态加载(也可以叫做So文件的热修复)已经介绍完了,其实还是比较简单的,只是修改了so文件列表的数组映射,加载了需要使用的真实的so文件.

1.6K20

【Android 逆向】Android 中常用的 so 动态库 ( systemliblibc.so 动态库 | libc++.so 动态库 | libstdc++.so 动态库 )

Windows 文件中 ; 使用 64 位的 IDA 打开上述动态库 ; libc.so 中有以下几个导入库 , dlopen , dlerror , dlclose ; 加载 libc.so 库之前..., 要先加载 /system/bin/linker 库 , 这是 so 动态库的加载模块 , 该动态库中 , 主要是实现了 dlopen 方法 ; 二、拷贝并分析 Android 中的 /system.../lib/libc++.so 动态库 ---- /system/lib/libc++.so 动态库是 C++ 程序中使用的动态库 ; 使用下面的命令拷贝该动态库 ; cp /system/lib/libc...lib/libstdc++.so 动态库 ---- /system/lib/libstdc++.so 动态库是 C++ 程序中使用的动态库 ; 使用下面的命令拷贝该动态库 ; cp /system/lib.../libc++.so 动态库 和 /system/lib/libstdc++.so 动态库 都依赖于 libc.so 动态库 ;

2K30

LiteAVSDK商业版6.6+,安卓集成动态加载so

一、简介 本篇文章主要介绍集成LiteAVSDK商业版、6.6以上的版本,安卓端采用动态加载so的方式时的写法。 安卓端非商业版aar集成、jar集成,可以参考官方集成文档 。...6.6之前的商业版,如何动态加载so,请参考上一篇文章《LiteAVSDK集成,动态加载so库》。...6.6版本前后动态加载so的差异: 版本 部分so必需在本地 P图的so必需按顺序加载 assets资源文件可否动态加载 6.5- Y Y N 6.6+ N N Y 二、动态加载so 1、下载sdk...点击setLibraryPath条目,调用sdk接口动态加载so。 点击setLicence条目,设置动效Licence。这一步会下载校验licence,请保持网络通畅、给读写权限。..."*/x86/libYTCommon.so" doNotStrip "*/arm64-v8a/libYTCommon.so" } //so没有加载成功,运行会报这个crash,请校验so完整性

3.3K96

Android so 加载原理分析

会先以一个Linux的例子描述native层加载动态链接库的过程, 再从Java层由浅入深分析System.loadLibrary 首先我们知道在Android(Java)中加载一个动态链接库非常简单...# Linux 系统加载动态库过程分析 Android是基于Linux系统的,那么在Linux系统下是如何加载动态链接库的呢?...可以通过下述命令可以查看上述函数的具体使用方法: man dlopen 如何在Linux环境下生成动态链接库,如何加载并使用动态链接库中的函数?...上面就是Linux环境下创建动态库,加载并使用动态库的全部过程。 由于Android基于Linux系统,所以我们有理由猜测Android系统底层也是通过这种方式加载并使用动态库的。...我们一般使用JNI_VERSION_1_4即可 Android动态库的加载Linux一致使用dlopen系列函数,通过动态库的句柄和函数名称来调用动态库的函数

7.3K31

android 加载so过程分析

在实现android插件化过程中,在插件代码中加载so时出现了一些问题,因此特地研究了一下android系统中加载so的过程,记录下来,整理成文。...在android系统中,加载so一般会调用System.loadLibrary(name)或者是System.load(path),这两个函数都可以用来加载so文件,区别在于System.loadLibrary...这两个函数本质上都是一样的,只是搜索so的搜索目录略有差别。下面以System.loadLibrary函数为例来分析加载so的实现原理。...的真正的文件路径;2:调用nativeLoad函数去实现真正的so加载;这里会牵扯到一个问题,如何通过so的名称去ClassLoader拿到so真正的文件路径?...so(findSharedLibEntry),如果已经加载过了,那么直接返回即可;如果没有加载,那么重新加载一遍,加载的过程可以用下面的流程来描述:调用dlopen() 打开一个so文件,取得该so的文件句柄

32121

Linux动态库(.so)和静态库(.a) 的区别

静态库和动态库的最大区别,静态情况下,把库直接加载到程序中,而动态库链接的时候,它只是保留接口,将动态库与程序代码独立,这样就可以提高代码的可复用度,和降低程序的耦合度。....6 => /lib/libc.so.6 (0xb7ce3000)         /lib/ld-linux.so.2 (0xb7f1b000) 二: 动态库 这类库的名字一般是libxxx.so...)         libc.so.6 => /lib/libc.so.6 (0xb7cd8000)         /lib/ld-linux.so.2 (0xb7f12000) 在上例中,动态库...例如将libd2.so换成libd.so 显式调用动态库 显式调用动态库,编译时无需库文件,执行时动态可存储于任意位置,库里共享对象必须先申请后使用,不同动态库版本,只要其共享对象接口相同,就可以直接动态加载...总结: 编译静态库时先使用-c选项,再利用ar工具产生.编译动态库的方式依不同版本的UNXI而定。隐式调用动态库与静态库的用法相一致,而显示调用动态库则需要借助动态加载共享库函数族。

16.4K21

【Android 逆向】Android 中常用的 so 动态库 ( libm.so 数学函数动态库 | liblog.so 日志模块动态库 | libselinux.so 安全模块动态库 )

文章目录 一、libm.so 数学函数动态库 二、liblog.so 日志模块动态库 三、libselinux.so 安全模块动态库 一、libm.so 数学函数动态库 ---- libm.so 是数学相关函数库..., 该动态库是 libc.so 动态库的依赖库 , 是最基础的函数库 ; 执行 cp /system/lib/libm.so /sdcard/Pictures 命令 , 将 libm.so 动态库拷贝到...对数函数 , 等 ; 二、liblog.so 日志模块动态库 ---- liblog.so 是日志模块的动态库 , 所有的日志打印 , 都使用的这个库 ; 执行 cp /system/lib/liblog.so.../sdcard/Pictures 命令 , 将 liblog.so 动态库拷贝到 /sdcard/Pictures 目录 , 之后可以将其拷贝到文件系统 ; 三、libselinux.so 安全模块动态库...---- libselinux.so 是安全模块的动态库 ; 执行 cp /system/lib/libselinux.so /sdcard/Pictures 命令 , 将 libselinux.so

89910
领券