android studio ndk开发 操作流程

1,新建一个项目,跟平时一样,不需要特殊处理

2,在项目名称上右键单击,选择open module settings ,在弹出的对话框中,左侧选择sdk location ,右侧设置ndk的本地路径

3,新建一个类,用来声明本地方法,如JniUtil

package cn.bio.biojnitest2;

/**
 * Created by zeqili on 2017/10/24.
 */

public class JniUtil {
    
    public static native String getNativeString();

}
4,选择android studio 的build菜单下的make project,编译项目,Java文件会被编译成对应的class文件

5,使用javah命令,根据JniUtil的class文件,生成头文件,使用终端进入app\build\intermediates\classes\debug目录下,执行如下命令

javah cn.bio.biojnitest2.JniUtil
这样会在app\build\intermediates\classes\debug目录下生成.h的头文件

6,在main下新建jni文件夹,src上右键new,选择folder,选择jnifolder,默认建在main下

7,将生成好的头文件拷贝到jni文件夹,复制一份成.c文件,在.c文件中实现头文件中的本地方法,示例代码如下

#include "cn_bio_biojnitest2_JniUtil.h"
JNIEXPORT jstring JNICALL Java_cn_bio_biojnitest2_JniUtil_getNativeString
  (JNIEnv *env, jclass obj){

    return (*env) -> NewStringUTF(env,"haha,huhu,hehe");


  }
8,在jni文件夹下创建Android.mk文件
LOCAL_PATH := $(call my-dir)

    include $(CLEAR_VARS)

    LOCAL_MODULE    := hello //这个名字随便起,在JniUtil文件中使用System.loadLibray方法引用这个名字
    LOCAL_SRC_FILES := cn_bio_biojnitest2_JniUtil.c //这个名就是你自己实现的c文件

    include $(BUILD_SHARED_LIBRARY)
9,在jni文件夹下创建Application.mk文件

APP_PROJECT_PATH := <path to project>
10,在app下的build文件中添加如下内容,添加到android标签内
externalNativeBuild {
        ndkBuild {
          path file("src\\main\\jni\\Android.mk")
        }
    }
11,补全JniUtil的代码,静态引入链接库
package cn.bio.biojnitest2;

/**
 * Created by zeqili on 2017/10/24.
 */

public class JniUtil {

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

    public static native String getNativeString();

}

12,调用本地方法,完活
package cn.bio.biojnitest2;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Toast.makeText(this,JniUtil.getNativeString(),Toast.LENGTH_LONG).show();

    }
}





猜你喜欢

转载自blog.csdn.net/hehe_heh/article/details/78329795