1
FranzKafka95 OP 另外备注一下,本身我们的进程属于 root 进程,而且 /system/lib64 对于 root 是可读写的,但就是不清楚为什么 cp 执行不成功,脑壳痛
|
2
cppc 2022-03-11 12:48:45 +08:00
一个 so ,两份头文件分别给两家厂商。你这个场景我看着像提供两份特供 SDK ,不是别人来适配你们。。
|
3
jorneyr 2022-03-11 12:51:13 +08:00
so 动态加载
|
4
FranzKafka95 OP @cppc 一份头文件,给两个甚至多个厂家,厂家来实现提供 so 库,我们集成厂家的 so 库
|
5
FranzKafka95 OP @jorneyr 请问如果实现这个动态加载,除了 dlopen 的这种形式坏还有其他办法吗
|
6
cppc 2022-03-11 13:28:12 +08:00
@FranzKafka95 搞半天你才是服务使用方,你自己开发一个代理层,它在根据需求加载同厂家的 so ,把 so 的句柄,和函数指针保存起来,你自己应用不直接调用厂商的 so ,而是通过这个代理来调用。
|
7
jorneyr 2022-03-11 13:30:21 +08:00
@FranzKafka95
好像没了,就是 so 的隐式动态加载。 |
8
FranzKafka95 OP @cppc 貌似只有这样改了,可是我还是不死心,为什么不能 cp 到 system/lib64 直接以系统加载的方式直接掉接口
|
9
cppc 2022-03-11 14:00:24 +08:00
jna 跨平台动态库加载实现是这样的:它加载动态库时,先判断当前环境,然后把 jar 包里面的动态库保存到临时目录,最后再通过绝对路径加载动态库。
都是 java ,可抄 |
10
FranzKafka95 OP @cppc 我们是 native C++的应用,你说的这个我知道,最终都是通过 dlopen 动态加载,可现在我就是不想通过 dlopen 加载
|
11
orannge 2022-03-11 23:03:16 +08:00
要是 /system/lib64 改了,系统还怎么做 OTA 升级?这样明显不行
|