一、android studio JNI 的简单编写使用。

jni网上资料挺多的。好吧好吧,感觉坑点有点多。敢不敢写的详细点啊。只能自己写写了。

首先就是先创建一个项目了。这个不用说了。然后新建一个类。写一个native 方法 ,如

public class JniTest {
    public  native String getHelloJniString();
}
然后build  make project项目。我们从build/intermediates/classes/debug 中就能找到JniTest.class 文件了。如果没有生成,那就是你项目报错了。处理一些重新build项目即可。

这里就要用到命令行了。找到AS下的Terminal 然后进入到你的module中,如 cd myjnitest/src/main/java 中。使用javah - jni com.jnitest.JniTest 命令。

这样就会生成一个.h的头文件。把它复制到main下的jni文件夹中(没有jni文件夹就创建一个)。

然后在jni下你可以自己写一个.c的文件。简单点如这样


自动会在jni下生成一个jnitest.c文件。简单的改写一下如下:

#include <jni.h>

JNIEXPORT jstring JNICALL Java_test_com_myjnitest_JniTest_getHelloJniString(JNIEnv
*env, jobject instance)
{

return (*env)->NewStringUTF(env, "JNI TEST");
}
 然后在 
MainActivity我们加入 

static {
    System.loadLibrary("jni");
}
在gradle加入
ndk{
    moduleName "jni"         //生成的so名字
    abiFilters "armeabi", "armeabi-v7a", "x86"
}

这里的ndk中的名称和static块中的名称要一致。

然后就是调用了。如下:


 s = (TextView) findViewById(R.id.s);

s.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        JniTest j = new JniTest();
        s.setText(j.getHelloJniString());
    }
});
这时候成不成功就要看你的API了。如果你使用了API 25的话,你中奖了。会报这样的错误,楼主亲测:
 Android NDK: Aborting . Stop.  
改一下API,重新编译一下就ok了。原因查资料说不支持API 25.
你会发现在build/intermediates/ndk/debug/ 中生成了.so文件。复制出来就可以用了。大功告成!
 
这里的槽点也是我的槽点,书写c文件的时候因为c语法不精,出现的问题。还是挺简单的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio是一款由Google推出的集成开发环境,专门用于开发Android应用的工具。而JNI(Java Native Interface)是Android开发中用于实现Java和本地代码(如C、C++)之间相互调用的技术。 首先,Android Studio在2021年继续是Android应用开发的主要开发环境之一。它提供了丰富的功能,如代码编辑器、调试器、布局设计工具等,使开发者可以方便地创建、调试和部署Android应用。2021年的版本可能会有更新的特性和改进,以进一步提高开发效率和开发者体验。 而在Android开发中,JNI是一个重要的技术,它允许开发者将本地代码与Java代码进行交互。通过JNI,开发者可以在Java代码中调用本地代码的功能,从而实现一些高性能、底层的操作,比如图像处理、音视频编解码等。同时,本地代码也可以调用Java代码的功能,实现双向的数据传输。 对于开发者来说,学习和使用JNI需要一定的C或C++编程经验。首先,需要编写本地代码,通过JNI提供的接口与Java代码进行交互;然后,在Java代码中进行JNI调用,使用本地代码的功能。在Android Studio中,可以通过JNI支持来创建、编译和调试本地代码,以及在Java代码中进行JNI调用。 总而言之,Android StudioJNIAndroid应用开发中的两个重要组成部分。Android Studio提供了开发Android应用所需的工具和环境,而JNI则提供了Java和本地代码之间的桥梁,使开发者可以更灵活和高效地开发Android应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值