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

本文探讨了为何在Android开发中使用NDK及JNI技术。重点介绍了使用NDK提高应用程序的安全性和运行效率,同时讨论了JNI在实现跨平台代码复用、提升性能和保护知识产权方面的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为何要用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++之间的耦合性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值