Android Studio ndk-Jni开发

  JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。它使得Java虚拟机内部运行的Java代码能够与其它编程语言(C&C++)编写的应用程序和库进行交互操作.

1.使用Android Studio新建一个项目

2.新建JniUtils类并实现native方法

public class JniUtils {
    public static native String sayHello();
}

3.生成.h文件

  1. 点击Build -> Clean Project
  2.点击Build -> Rebuild Project
  3.打开Android Studio 的Terminal并进入app/build/intermediates/classes/debug目录

cd app/build/intermediates/classes/debug

  4.输入javah -jni <包名>.<类名>

javah -jni com.coolke.helloworld.JniUtils

  5.在app/main目录下新建jni目录,并将之前生成的.h文件剪切到该目录下

4.配置jni开发的相关设置

  1.在gradle.properties文件末尾添加android.useDeprecatedNdk=true
  2.在build.gradle文件的defaultConfig括号内添加如下内容

ndk {    
   moduleName "hello"          //生成的so名字 
   abiFilters "armeabi", "armeabi-v7a", "x86" //输出指定三种abi体系结构下的so库,目前可有可无。
   }

  3.配置完毕后,点击Build -> Rebuild Project

4.在jni目录下新建.c文件,文件名随意

#include <jni.h>
//
// Created by coolke on 16-6-4.
//

JNIEXPORT jstring JNICALL Java_com_coolke_helloworld_JniUtils_sayHello(JNIEnv *env, jclass obj)
{
    return (*env)->NewStringUTF(env,"hello");
}

  C问文件建好后点击Build -> Rebuild Project,此时JniUtils类里就不会报红色了

5.在JniUtils类中加入加载库的代码

static {
    System.loadLibrary("hello");
}

6.使用

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toast.makeText(this,JniUtils.sayHello(),Toast.LENGTH_SHORT).show();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值