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

进行Android JNI编程前,你需要知道的几点。

2016-11-08 17:18 197 查看

为何要用NDK?

众所周知,利用SDK编写的代码,生成的APK,很容易就可以反编译,安全性极为不高,而利用NDK开发的库,不容易被反编译,保密性、安全性都提高了很多。而且很多开源工程和大型工程都是C/C++代码,把它装换为纯Java语言显然是不可能的,再者C/C++的代码运行速度和效率都比Java快很多。

JNI一般用于做什么?

1)主要是一些对效率要求比较高的算法,C/C++运行速度比较快,特别是在一些游戏中的算法。
2)为了保密,APK是可以被反编译的,就算有了代码混淆,也是能看懂很多的,但是JNI编程中生成的.so就不同了,所以保密性要高。
3)一个平台(C++代码)迁移到Android平台,底层逻辑是相同的,这样就可以通过移植,利用JNI调用底层C++代码,避免相同逻辑的代码重复去写,不过这个过程中一定要注意底层对象的释放问题,换句话说,申请资源和释放资源基本上hi成对出现的。

JNI的副作用

一旦使用了JNI,Java程序就丧失了Java平台的两大优点:
1)程序不在跨平台。要想跨平台,必须在不同的系统环境下重新编译本地语言部分。
2)程序不在是绝对安全。本地代码的不当使用可能导致真个程序奔溃
一个通用的规则是,你应该让本地方法集中在少数几个类当中,这样就降低了Java和C/C++之间的耦合性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: