简介
前面写了几篇NDK相关的文章:
这个demo就是对这几篇文章中涉及内容的一个应用。其功能只是对数组进行排序。如果单纯使用Java来做十分简单,只需写个排序方法,或者将数组转化为集合,然后调用sort函数就ok了。
但我们的目的是练习JNI所以需要使劲的折腾一下,其中主要涉及了:
- Java调用JNI函数
- JNI调用Java函数
- JNI中打印Android Log
- JNI中调用c++函数库
- JNI调用普通方法/静态方法
- JNI全局变量使用
- JNI数组的操作
- JNI异常处理
演示图
点击按钮对数组排序:
排序成功:
Java代码:
Activity代码:
public class MainActivity extends AppCompatActivity {
// 导入动态库
static {
System.loadLibrary("test");
}
// 本地排序方法
public native boolean doSort(int [] array);
private Button mOrderBtn;
private TextView mResultText;
// 需要排序的数组
int[] orderArrays = {
6,2,5,9,1,3,4,7,8,0,10};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 调用jni调用静态方法返回一个字符串(hello world?)
Log.d("TestNDK", JNIHelper.getStringFromNative());
mResultText = (TextView) this.findViewById(R.id.result);
setResultText(orderArrays);
m