环境:

Android Studio 1.1.0

NDK-r10d

1、新建项目---》包名:com.mxl.az.ndk

新建包含native方法的类:JniOperation.class

public class JniOperation {    public static native String getString();    public native int add(int a, int b);}

2、然后使用javah命令生成.h文件

打开“小黑框”,进入项目目录的.../app/build/intermediates/classes/debug/中

javah -jni com.mxl.az.ndk.JniOperation

执行命令后,会在debug目录下生成.h文件

3、在src/main目录下新建jni文件夹

把.h文件copy到jni文件夹中

4、新建main.c,include-->.h文件,并实现其中的俩个方法

#include "com_mxl_az_ndk_JniOperation.h"#include <android/log.h>#define  LOG_TAG    "HelloJni"#define  LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)#define  LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)JNIEXPORT jstring JNICALL Java_com_mxl_az_ndk_JniOperation_getString  (JNIEnv * env, jclass cla){    int i;    int size = 4;    for(i=0; i<size; i++){        LOGI("MXL");    }    return (*env)->NewStringUTF(env, "JNI 运算结果:");}JNIEXPORT jint JNICALL Java_com_mxl_az_ndk_JniOperation_add  (JNIEnv * env, jobject obj, jint a, jint b){  return a + b;}

5、在local.properties中配置ndk路径

ndk.dir=/Users/mxl/Android/android-ndk-r10d

6、配置一下build.gradle文件中的ndk

defaultConfig {        minSdkVersion 8        targetSdkVersion 22        versionCode 1        versionName "1.0"        ndk {            abiFilter "armeabi"            moduleName "hellojni"            ldLibs "log", "z", "m", "jnigraphics", "android"        }    }

7、在Activity中加载库,运行

 1 public class MainActivity extends ActionBarActivity { 2  3     static { 4         System.loadLibrary("hellojni"); 5     } 6  7     private TextView tv; 8  9     @Override10     protected void onCreate(Bundle savedInstanceState) {11         super.onCreate(savedInstanceState);12         setContentView(R.layout.activity_main);13 14         tv = (TextView) findViewById(R.id.tv);15         JniOperation jniOperation = new JniOperation();16         tv.setText(JniOperation.getString() + jniOperation.add(2,8));17     }18 }

更多相关文章

  1. android常用方法汇总-更新中
  2. Android 制定的ROM包(文件系统根目录结构分析)
  3. android content命令
  4. Android结束进程的方法
  5. Android中xml文件读写
  6. Android中Manifest.xml配置文件
  7. Android 比Timer更好方法
  8. android之layout配置文件解读
  9. android 从tomcat读取文件出错:connect failed: ECONNREFUSED

随机推荐

  1. Android:使用webview上传文件(支持相册和
  2. Android适配器总结
  3. main thread in android application
  4. canvas save() restoreToCount() Test
  5. Android(安卓)内部存储外部存储
  6. Android(安卓)倒计时功能的实现(CountDow
  7. 自定义控件之TabIndicator
  8. android LruCache的使用 (本地缓存+内存缓
  9. android Glide3.7 圆角图片
  10. Butter Knife 官方文档