Android Studio实现JNI的开发(基础)
最近看了一些关于Android JNI开发的文章,自己也动手实践了一下,写篇博客记录一下以便以后再用到
一、JNI简介
JNI——Java Native Interface,它是Java平台的一个特性(并不是Android系统特有的)。其实主要是定义了一些JNI函数,让开发者可以通过调用这些函数实现Java代码调用C/C++的代码,C/C++的代码也可以调用Java的代码,这样就可以发挥各个语言的特点。
二、开发环境
开发使用的环境配置:
JDK版本:1.7
AndroidStudio版本:2.2.3
NDK版本:ndk_r13b
NDK下载地址:https://developer.android.google.cn/ndk/downloads/index.html
Android Studio及JDK 下载地址:http://www.android-studio.org
由于开发环境已经配置好这里不再赘述,如需要可参考网上的一些文章。下面进入主题开始动手。
新建项目NativeApplication,如下图:
检查Android NDK Support插件
为项目配置NDK路径
配置好以后,就可以开始写代码了,首先在java文件夹下新建一个包cn.jni.demo,然后新建CallNative类,当然CallNative类也可以新建在原来的包名下,这个为了区分新建了一个包,如下图:
下面在CallNative类里面添加native方法,代码如下:
public class CallNative {
public native int getVersion();
}
然后在工具栏【Build】->执行【Make Project】,执行成功后可以在
E:\ws_space\NativeApplication\app\build\intermediates\classes\debug\cn\jni\demo目录下看到CallNative.java类,如下图:
然后在Android Studio 面板里的Terminal里面输入一下指令,生成对应的.h文件,命令如下:
1、cd app/src/main/java
2、javah -d ../jni cn.jni.demo.CallNative
如图:
以上两条命令执行成功后,会生成jni的文件夹,该文件夹下有对应的cn_jni_demo_CallNative.h文件,如图:
然后在jni文件夹下新建test.cpp文件,如下图:
接下来对build.gradle文件进行配置:
对gradle.properties文件进行配置:
配置好上述内容,执行菜单栏【Build】->【Rebuild Project】,执行成功后可在
E:\ws_space\NativeApplication\app\build\intermediates\ndk\debug\lib此目录下看到对应的.so文件,如图:
接下来修改CallNative.java里面的代码入下:
public class CallNative {
public native int getVersion();
static {
System.loadLibrary("CallNative");
}
}
最后就可以在MainActivity里面调用CallNative里面的native方法了,代码如下:
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CallNative callNative = new CallNative();
Log.i(TAG, "version code :" + callNative.getVersion());
}
}
运行后,可以在控制台看到输出如下:
至此就完成了jni的简单调用