Android Studio 中使用JNI的步骤

     新年新气象! 新的一年里虽然各种乱七八糟事,不过还是要满怀希望吧。 不然整天郁郁闷的过也挺悲剧的,所以还是要开开心心个过完每一天!闲话不多说了,最近接触了新的项目,3D视频播放,APP基本上都是JNI实现功能,之前没具体学习过,现在将学习的记录下:Eclpse就不多说了,现在基本不怎么用了。

1。首先新建一个工程:在MainActivity的onCreate()之前写好native 方法以及System.loadLibrary()方法:在写native方法的时候会显示红色报错(即方法不存在),先不管。


public class MainActivity extends AppCompatActivity {
    static {
        System.loadLibrary("hello_jni");
    }
    public native String getStringFromC();
    @Bind(R.id.textview)
    TextView textview;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        initData();
    }
    private void initData() {
        textview.setText(getStringFromC());
    }
    @OnClick(R.id.textview)
    public void onClick() {
        Toast.makeText(this, "点点点点点点点点点点", Toast.LENGTH_SHORT).show();
    }
}
2. 点击"View->Tool Windows->Terminal",即在Studio中进行终端命令行工具.执行如下命令生成c语言头文件。

在命令行中cd到app的src /main/ java的文件夹下,然后执行javah -d jni (或者javah -d ../jni )native方法所在的包名+类名,中间使用“.”号分开。然后点击

例如:F:\Demo\MyApplication>cd app/src/main/java     javah -d jni  com.vstar.xy.myapplication.MainActivity

3.在执行完上一部操作后,在app/src/main下会自动生成名为jni的文件夹(同java文件夹一个层级),在文件夹下会有com_vstar_xy_myapplication_MainActivity.h的文件。

4.在jni的文件夹下创建 @@@.c的文件,(点击jni右击,new ——>File),此处命名为hello_jni.c。里面执行简单的方法(返回一个String字符串)

#include<com_vstar_xy_myapplication_MainActivity.h> JNIEXPORT jstring JNICALL
Java_com_vstar_xy_myapplication_MainActivity_getStringFromC(JNIEnv*env,jobject obj ){
 return (*env)->NewStringUTF(env,"Hello From JNI! 我勒个去!");
}
5.同样的在jni文件下创建名为Android.mk和Application.mk的文件:里面的内容分别是:

Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE :=hello_jni
LOCAL_SRC_FILES := hello_jni.c
include $(BUILD_SHARED_LIBRARY)
Application.mk:
APP_ABI := all
APP_OPIM :=debug
6.在app文件夹下的 build.gradledefaultConfig 添加
ndk{
    moduleName"hello_jni"  ldLibs "log", "z", "m"  abiFilters "armeabi", "armeabi-v7a", "x86" }

7.在MyApplication文件夹下的  local.properties 设置ndk的位置(首先你得下载Android NDK,android-ndk-r10e,然后点击File-->Project Structure,选择SDK Location,然后相应的设置 SDK,JDK,NDK的位置):

ndk.dir=F\:\\Android\\NDK\\android-ndk-r10e sdk.dir=F\:\\Android\\SDK 
8.在MyApplication文件夹下的  gradle.properties 中设置
android.useDeprecatedNdk=true

9.运行程序。
以上基本上步骤就结束了。

你可能感兴趣的:(android,jni,jni,NDK,Studio)