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>
编辑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就好了