开发环境

  • jdk1.8.0_77
  • sdk 25.1.1
  • ndk android-ndk-r11c-windows-x86_64
  • Android Studio 2.0

参考:Step by Step - How to create a c++ library with NDK on Android Studio 1.5 (not experimental way)

详细步骤

一:新建工程HelloFromJni

Android Studio 2.0下创建jni应用调用本地C函数_第1张图片

二:配置工具

1 切换到project视图右键打开Module setting,添加NDK目录

Android Studio 2.0下创建jni应用调用本地C函数_第2张图片

2 在build.gradle文件的defaultConfig节点中类似添加

defaultConfig {    ...    ndk {        moduleName "hello-jni"    }    sourceSets.main {        jni.srcDirs = []        jniLibs.srcDir "src/main/libs"    }}

3 在Settings > Tools > External Tools中添加命令行工具(NDK)如下:

1 添加javah (以便根据MainActivity生成相应头文件)

2 添加ndk-build.cmd编译命令工具

Android Studio 2.0下创建jni应用调用本地C函数_第3张图片

3 添加ndk build clean工具

4 编辑MainActivity.java文件添加本地方法声明,并加载类库(此处为hello-jni),示例代码如下:

package com.example.dell.hellofromjni;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;public class MainActivity extends AppCompatActivity {    static{        System.loadLibrary("hello-jni");    }    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        TextView tv=(TextView)findViewById(R.id.tv);        tv.setText(getStrFromJni());    }    public native String getStrFromJni();}

5 在app上右键生成jni目录

6 在MainActivity.java上右键选择NDK工具javah,在jni目录中生成com_example_dell_hellofromjni_MainActivity.h文件

Android Studio 2.0下创建jni应用调用本地C函数_第4张图片

7 在jni目录中新建并编写hello-jni.c文件,函数可以直接在刚才生成的头文件中靠过来并添加参数和函数体:

#include "com_example_dell_hellofromjni_MainActivity.h"JNIEXPORT jstring JNICALL Java_com_example_dell_hellofromjni_MainActivity_getStrFromJni  (JNIEnv * env, jobject obj){        char* cstr = "hello from c";        return (*env)->NewStringUTF(env, cstr);  }

8 在jni中新建编译配置文件Android.mk和Application.mk

Android.mk

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE    := hello-jniLOCAL_SRC_FILES := hello-jni.cinclude $(BUILD_SHARED_LIBRARY)

Application.mk

APP_MODULES := hello-jniAPP_ABI := armeabi armeabi-v7a x86

9 在jni文件夹上右键选择NDK> ndk-build编译c代码,如果发生错误应该用ndk build clean一下清楚编译生成的类库再修改错误

Android Studio 2.0下创建jni应用调用本地C函数_第5张图片

10 现在就可以在虚拟机或者真机上测试运行了:

Android Studio 2.0下创建jni应用调用本地C函数_第6张图片

Android Studio 2.0下创建jni应用调用本地C函数_第7张图片

更多相关文章

  1. Android(java)时间转换星期 昨天 今天 几分钟前工具
  2. Android之文件操作
  3. Android SDK目录下的各个文件夹的作用
  4. Android修改文件和文件夹权限
  5. android打开pdf ppt word excel chm html text 文件
  6. android加载文件的方式,路径的写法
  7. android中创建目录以及txt文件
  8. Android 指定(后缀名)格式文件扫描

随机推荐

  1. Android(安卓)下载apk提示更新以及解决An
  2. android单元测试
  3. Spring for android实现客户端与服务器的
  4. android中的主题(theme)的定义
  5. LBE 安全大师支持android 4.4注入分析
  6. Android中listview中的button
  7. Android分辨率自适应
  8. ionic打包apk时报错No resource identifi
  9. Android(安卓)的source (需安装 git repo
  10. Service简析