Android Studio NDK - JNI的初步编写


此文章主要讲解如何在Android Studio中设置NDK,这里就不跟大家解释什么是NDK了,想知道NDK的相关知识的可以先到这个网站上查阅,上面有对NDK相关的一些知识点以及如何在Eclipse上设置NDK有详细的解释,下面给出地址:https://developer.android.com/ndk/guides/index.html (此网站需要翻墙查阅)


下面给出具体步骤:

1.新建一个Android工程;

2.点击工具栏中的SDK Manager,在SDK Tools中勾选LLDB与NDK工具,点击OK或Apply进行下载,下载完成后即可执行下一步。

2.在你的工程中创建一个与MainActivity同级的类,这里叫NdkString,新建Native方法:

public static native String getFromC();
3.创建完成后,点击Build->Make Project编译一遍,编译完成后,会在app\build\intermediates\classes\debug路径下生成对应的class文件,若没有生成,请重新编译一遍,或者点击Build->Clean Project,再点击Rebuild Profect,生成class文件。

4.点击在Android Studio的左下角的Terminal,这里的Terminal路径已经在你创建的工程路径下,所以你只需输入cd app\src\main即可,在使用CMD命令时需定义到C:\Users\BadGuy\Desktop\NdkTest\app\src\main 这里。然后执行javah -d jni -classpath ..\..\build\intermediates\classes\debug com.example.badguy.ndktest.NdkString这个命令。(这里应该还有其他写法,在下方的给出链接中你会看到其他写法,就不详细介绍了。 )

5.执行完命令后,在你的src\main路径下会多出一个jni文件夹并且在文件夹中有com_example_badguy_ndktest_NdkString.h这个头文件。在jni文件目录下创建一个Hello.c文件(可以new File来创建,记住要加.c后缀;也可以new C++ Source File),在Hello.c中实现头文件中的方法,这里不要忘记通过#Include引入头文件。这里实现的方法只返回了一个JAVA层的字符串。

#include "com_example_badguy_ndktest_NdkString.h"

JNIEXPORT jstring JNICALL Java_com_example_badguy_ndktest_NdkString_getFromC
  (JNIEnv * env, jclass jclass){
        return (*env)->NewStringUTF(env,"From C");
  }

6.在gradle.properties文件末尾添加如下代码,并编译。

android.useDeprecatedNdk=true

7.编译完成后,在ndk\debug\lib下有各种平台的so文件,,我们可以回到一开始新建的NdkString类中,添加如下代码:

static {
    System.loadLibrary("app"); //你的包名
}
8.最后,在MainActivity中调用NdkString.getFromC()方法即可:

btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        btn.setText(NdkString.getFromC());
    }
});

参阅资料:

http://www.imooc.com/learn/650

http://www.jianshu.com/p/d695020dc08c

http://blog.csdn.net/u012532559/article/details/51078362

https://zhidao.baidu.com/question/748278566116523732.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值