Android Studio编译ndk

背景:

        我们一般选择使用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,等啊等啊。然后就好了。


安装好后变成一个减号


Android Studio编译ndk_第1张图片
ndk路径自动生成的


Android Studio编译ndk_第2张图片
这句自己加,运行时防止报错

2、gradle配置

在build.gradle里

Android Studio编译ndk_第3张图片
生成的so的名字,和生成哪些abi的so


Android Studio编译ndk_第4张图片
在android语句块里添加这个,就是编译好的so生成到哪个目录里

3、java调用类

其实就短短几行而已

Android Studio编译ndk_第5张图片
别忘了刚才自己写的.so的名字

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,根据自己的包修改即可。

Android Studio编译ndk_第6张图片


Android Studio编译ndk_第7张图片
把这个文件放到jni目录下,没有就自己建一个吧


Android Studio编译ndk_第8张图片
看到没,最长那个

5、写C代码

在jni里面写个简单的c程序,比如jnitest.c整个工程我一会儿打包上传。

6、AS里点击Build->make project就可以生成.so了

.so在这里H:\NdkJniDemo\app\build\intermediates\ndk\debug\lib


Android Studio编译ndk_第9张图片
文件夹对应第2步的abi配置

把这几个文件夹拷贝到app的libs目录H:\NdkJniDemo\app\libs

6、现在可以运行了,结果大家看真机吧,我这里不截图了

https://pan.baidu.com/s/1slBF0nV

你可能感兴趣的:(Android Studio编译ndk)