8

项目应用需要匹配多个外部厂家,如何优雅实现

 2 years ago
source link: https://www.v2ex.com/t/839645
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  程序员

项目应用需要匹配多个外部厂家,如何优雅实现

  FranzKafka95 · 4 小时 26 分钟前 via Android · 603 次点击
继上次头文件向下兼容后(最终我们采用了宏控的方式来解决这个问题),我们产品经理又给我们带来了难题,在同一个项目中,两个厂家都需要来适配我们定义的借口并提供 lib.so ,在编译时无法区分具体的厂家,只有在程序运行起来时根据配置去解析。
这样意味着我们的软件在打包时需要打包两个 libx.so ,且不能再放到 system/lib64 目录下了(程序运行环境是安卓)

目前为止,我们想到的办法是,将代码里直接调用 libx.so 接口的地方改掉,改为调用函数指针,而这个指针地址通过 dlopen 后拿到的句柄去获取,对于不同的厂家 dlopen 不同路径下的 libx.so 即可。

除了这种方式,我们也想过在程序运行真正前,先执行代码逻辑将 libx. so 拷贝到 system/lib64 目录下,然后调用的地方仍旧保持不变。但实践下来并不成功,原因是 system/lib64 不支持外部拷入。

想问一下大家,这种情况有没有好的解决办法?

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK