Android Studio实现JNI的开发(基础)

6 篇文章 0 订阅
2 篇文章 0 订阅

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的简单调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值