Android工程将流程封装在.so中是否是一个很好的选择。

楼主目前在做的项目,将大量的业务接口封装成.so库,提供给楼主上层代码调用。


这样的方法,在项目跨数个平台的情况下,有它最明显的优势:一库搞定,节省了大量的代码。除此之外,还可以增加代码的安全性,增加反编译难度等。


但慢慢地楼主发现,这样做也有其不可忽视的弊端:

1.对于Android来说,使用.so就要写JNI接口,这样“可移植”性就非常不好(虽然我们也不做什么跨平台的事...);

2.一旦库中接口发生变化,数个端就要配合做改动,可谓牵一发而动全身,作为上层开发人员这样非常被动;

3.Java/Android提供的一些便利的API,作为使用c/c++开发的库本身就享受不到,这样会增加一部分成本和风险;

4.这样的方式,在开发过种中,编写.so库的同事也会非常头疼,Android提供的native调试工具是非常难用的,大多数情况要加大量的log来定位问题;

5.在需要上层与库发生交互时,比如native代码回调上层,native层有心跳在监听状态等,这些情况需要大量、稳定的JNI代码做支撑,给Android程序员带来一些额外的成本;


Above all,选择这种方式与否,最好通过前期大量的考察和验证,再作出决定。


以上是楼主的一些浅见,希望大家一起讨论 -v-


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值