1.创建本地方法。public static native String getString();
2.加载库文件。static{ System.loadLibrary("HelloNdk"); }
下载安装NDK,配置环境
add Android Native Support 将会出现jni文件夹,即下面Hello_NDk.cpp和Android.mk
第一种方法
javah -classpath . -jni com.example.ndk.GetString
将生成的.h文件拷贝到jni目录下
第二种方法
创建一个xml文件
用ant打开
用ant执行下面代码,如果不成功,就将javah这行代码改为
<exec executable="javah" dir="${basedir}/bin/"> <arg value="-classpath"/> <arg value="classes"/> <arg value="-d"/> <arg value="${basedir}/jni"/> <arg value="-jni"/> <arg value="com.example.hellondk.GetString"/> </exec>
</pre><pre code_snippet_id="1675487" snippet_file_name="blog_20160508_1_2733330" name="code" class="html"><?xml version="1.0" encoding="UTF-8"?> <!-- ====================================================================== 2016年5月8日 下午6:21:49 HelloNDK description hejia ====================================================================== --> <project name="HelloNDK" default="BuildAllHeaders"> <description> description </description> <!-- ================================= target: BuildAllHeaders ================================= --> <target name="BuildAllHeaders"> <antcall target="BuildGetStringHeaders"> </antcall> <antcall target="BuildGetIntHeaders"> </antcall> </target> <!-- - - - - - - - - - - - - - - - - - target: BuildGetStringHeaders - - - - - - - - - - - - - - - - - --> <target name="BuildGetStringHeaders"> <javah destdir="./jni" classpath="./bin/classes/" class="com.example.hellondk.GetString"></javah> </target> <!-- ================================= target: BuildGetIntHeaders ================================= --> <target name="BuildGetIntHeaders" > <javah destdir="./jni" classpath="./bin/classes/" class="com.example.hellondk.GetInt"></javah> </target> </project> 然后再jni目录下也会自动生成.h文件
编辑cpp文件
#include <jni.h> #include "com_example_hellondk_GetString.h" #include "com_example_hellondk_GetInt.h" JNIEXPORT jstring JNICALL Java_com_example_hellondk_GetString_getString (JNIEnv *env, jclass){ return env->NewStringUTF("Static Method Call"); } JNIEXPORT jstring JNICALL Java_com_example_hellondk_GetString_getStr (JNIEnv *env, jobject){ return env->NewStringUTF("Method Call"); } JNIEXPORT jint JNICALL Java_com_example_hellondk_GetString_add (JNIEnv *env, jobject, jint a, jint b){ return a+b; } JNIEXPORT jint JNICALL Java_com_example_hellondk_GetInt_getInt (JNIEnv *, jclass){ return 8; } 文件报错,重新启动eclipse就好了