您的位置:首页 > 移动开发 > Android开发

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

2013-12-18 17:46 381 查看
楼主目前在做的项目,将大量的业务接口封装成.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-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: