背景:
我们一般选择使用ndk无外乎为了隐藏java代码,还有提高硬件的访问速度。第一点,目前的加密手段已经可行,至于第二点,多半在音视频中应用,比如bilibili的ijkPlayer中就有ffmpeg的.so。当年的编译还要Linux环境,比如cygwin或者Ubuntu,笔者就吃过这些亏。不过现在好了,AS自带jni编译了。
环境:
win7 64位系统
AS 2.0
步骤:
1、装载ndk,打开AS,在Tools->Android->SDK Manager的右边第二个选项SDK Tools里选择NDK,点击右下角Apply,等啊等啊。然后就好了。
![](https://img.haomeiwen.com/i6341595/c15acb45b0b48316.png)
![](https://img.haomeiwen.com/i6341595/0773c04488b8781b.png)
![](https://img.haomeiwen.com/i6341595/02528baf405be81f.png)
2、gradle配置
在build.gradle里
![](https://img.haomeiwen.com/i6341595/91d83cf34131fbbc.png)
![](https://img.haomeiwen.com/i6341595/bfdb2366b1412439.png)
3、java调用类
其实就短短几行而已
![](https://img.haomeiwen.com/i6341595/3c5072ecf6d15cc8.png)
4、生成c++用的.h
首先build一下,生成java的class,在H:\NdkJniDemo\app\build\intermediates\classes\debug\com\example\ll\ndkjnidemo这里。不过这不重要,因为我们在包外面操作就好。打开AS的Terminal,进入app/build/intermediates/classes/debug目录,输入javah -jni com.example.ll.ndkjnidemo.NdkJniUtils,根据自己的包修改即可。
![](https://img.haomeiwen.com/i6341595/1ba1b14b6dad7582.png)
![](https://img.haomeiwen.com/i6341595/3bf69338be3261d7.png)
![](https://img.haomeiwen.com/i6341595/723754feba9ca143.png)
5、写C代码
在jni里面写个简单的c程序,比如jnitest.c整个工程我一会儿打包上传。
6、AS里点击Build->make project就可以生成.so了
.so在这里H:\NdkJniDemo\app\build\intermediates\ndk\debug\lib
![](https://img.haomeiwen.com/i6341595/ffd01146e068a46b.png)
把这几个文件夹拷贝到app的libs目录H:\NdkJniDemo\app\libs
6、现在可以运行了,结果大家看真机吧,我这里不截图了
网友评论