1. 创建Android Project
File -> New -> Android Application Project
2. 定义调用C函数的java类,并生成(Eclipse中是自动编译的)。
Java代码:
package lw.example.hellondk;
public class HelloJni {
public native String getStringFromJni();
public static native String
getStringFromJniStatic();
static
{
System.loadLibrary("HelloNdk");
}
}
3. 生成h文件
在Project新建gen_h.bat文件,输入内容如下:
javah -classpath bin\classes -d jni
lw.example.hellondk.HelloJni
@pause
运行该bat文件后,会在jni目录生成lw_example_hellondk_HelloJni.h文件。
4. 添加Native支持
右击Project -> Android Tools -> Add Native Support...
5. 附加Android Native C的h文件
右击project -> Properties,设置如下:
6. 在cpp文件中实现函数。
#include
"lw_example_hellondk_HelloJni.h"
jstring
Java_lw_example_hellondk_HelloJni_getStringFromJni(JNIEnv*
env, jobject thiz)
{
return env->NewStringUTF("Hello
JNI!");
}
jstring
Java_lw_example_hellondk_HelloJni_getStringFromJniStatic(JNIEnv*
env, jclass thiz)
{
return env->NewStringUTF("Hello
JNI!(static)");
}
7. 编译so文件
点击工具栏,编译成功后,会生成so文件。
8. 在Activity中添加测试代码。
package lw.example.hellondk;
import android.app.Activity;
import
android.widget.TextView;
import android.os.Bundle;
public class
MainActivity extends Activity {
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
/* Create a TextView and set its
content.
* the text is
retrieved by calling a
native
*
function.
*/
TextView tv = new
TextView(this);
tv.setText(
HelloJni.getStringFromJniStatic()
);
setContentView(tv);
}
}
9. 运行查看结果