继上次头文件向下兼容后(最终我们采用了宏控的方式来解决这个问题),我们产品经理又给我们带来了难题,在同一个项目中,两个厂家都需要来适配我们定义的借口并提供 lib.so ,在编译时无法区分具体的厂家,只有在程序运行起来时根据配置去解析。
这样意味着我们的软件在打包时需要打包两个 libx.so ,且不能再放到 system/lib64 目录下了(程序运行环境是安卓)
目前为止,我们想到的办法是,将代码里直接调用 libx.so 接口的地方改掉,改为调用函数指针,而这个指针地址通过 dlopen 后拿到的句柄去获取,对于不同的厂家 dlopen 不同路径下的 libx.so 即可。
除了这种方式,我们也想过在程序运行真正前,先执行代码逻辑将 libx. so 拷贝到 system/lib64 目录下,然后调用的地方仍旧保持不变。但实践下来并不成功,原因是 system/lib64 不支持外部拷入。
想问一下大家,这种情况有没有好的解决办法?
这样意味着我们的软件在打包时需要打包两个 libx.so ,且不能再放到 system/lib64 目录下了(程序运行环境是安卓)
目前为止,我们想到的办法是,将代码里直接调用 libx.so 接口的地方改掉,改为调用函数指针,而这个指针地址通过 dlopen 后拿到的句柄去获取,对于不同的厂家 dlopen 不同路径下的 libx.so 即可。
除了这种方式,我们也想过在程序运行真正前,先执行代码逻辑将 libx. so 拷贝到 system/lib64 目录下,然后调用的地方仍旧保持不变。但实践下来并不成功,原因是 system/lib64 不支持外部拷入。
想问一下大家,这种情况有没有好的解决办法?