-
下载NDK,配置环境变量,在Android Studio里ctrl+shift+alt+s打开Project Structure,配置Android NDK location;
-
新建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:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := JNIHello
LOCAL_SRC_FILES := JNIHello.cpp
include $(BUILD_SHARED_LIBRARY)
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