最近项目中需要使用到NDK编译so库,控制硬件。由于不熟悉JNI和NDK,网上搜了一些方法,做个笔记备忘和分享给用需要的朋友。
那如何用Android Studio编写JNI代码,然后生成so库呢?
来看看一个简单的实例: 编写一个native的加法函数,然后在MainActivity中调用并显示结果。
需要准备的事:
1 配置好的JDK环境和Android Studio开发环境、SDK
2 下载好NDK工具 (http://www.androiddevtools.cn/ 网站有很多Android开发需要的工具。)
1 新建Android工程
2 添加一个类,类中包含你想用C/C++语言实现的native方法,只是声明。
MyJni.java
package com.example.hui.myjnitest ;
public class MyJni {
static {
System.loadLibrary ("myjni" ) ;
}
public native int add (int a , int b) ;
}
其中有个静态代码块,在MyJni类加载时,执行块内代码。
System.loadLibrary (“myjni” ) ; 程序运行时,加载库文件,在Android(Linux)中,会搜索并加载名字为libmyjni.so的文件,如果找不到,会报异常。在Windows中会搜索myjni.dll的库
3 调用native方法
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate (Bundle savedInstanceState) {
super .onCreate(savedInstanceState) ;
setContentView(R.layout. activity_main );
MyJni myJni =