Android NDK环境配置

  1. 下载NDK,配置环境变量,在Android Studio里ctrl+shift+alt+s打开Project Structure,配置Android NDK location

  2. 新建Main Activity 和 JNIUtils;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

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

        button = findViewById(R.id.button);
        textView = findViewById(R.id.textview);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                textView.setText(JNIUtils.sayHelloFromJNI());
            }
        });
    }
}

JNIUtils:

public class JNIUtils {

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

    public static native String sayHelloFromJNI();
}

3.在Terminal里:
cd app/src/main/java
javah -d …/jni com.example.ndkdemo.JNIUtils

如此一来生成jni文件夹和com_example_ndkdemo_JNIUtils.h。

4.写JNIHello.cpp

#include "com_example_ndkdemo_JNIUtils.h"
JNIEXPORT jstring JNICALL Java_com_example_ndkdemo_JNIUtils_sayHelloFromJNI(JNIEnv *env, jclass jclass){
return env->NewStringUTF("HEllo world from JNI");
}

5.在jni文件夹下写Android.mk和Application.mk:

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := JNIHello
LOCAL_SRC_FILES := JNIHello.cpp
include $(BUILD_SHARED_LIBRARY)

Application.mk

APP_PLATFORM := android-16
APP_ABI := all

6.在Module的build.gradle里:

在defaultConfig里:

ndk{
    moduleName "JNIHello"
}

在buildTypes里:

sourceSets{
    main {
        jniLibs.srcDirs = ['src/main/libs']
        jni.srcDirs = []
    }
}

7.在Terminal里的app\src\main\jni下ndk-build

猜你喜欢

转载自blog.csdn.net/weixin_42112064/article/details/89818876