No implementation found for native android -
i searched lot not found why error comes in project. making simple hello world type project. first project. follow steps in
[http://code.google.com/p/awesomeguy/wiki/jnitutorial][1]
[1]:http://jnitutorial
error:
04-15 14:06:31.610: i/mainactivity(22766): oncreate 04-15 14:06:31.610: w/dalvikvm(22766): no implementation found native lcom/useofjniwithjava/mainactivity;.somefunction:(i)v 04-15 14:06:31.610: w/dalvikvm(22766): threadid=1: thread exiting uncaught exception (group=0x40ed8438) 04-15 14:06:31.610: e/androidruntime(22766): fatal exception: main 04-15 14:06:31.610: e/androidruntime(22766): java.lang.unsatisfiedlinkerror: native method not found: com.useofjniwithjava.mainactivity.somefunction:(i)v 04-15 14:06:31.610: e/androidruntime(22766): @ com.useofjniwithjava.mainactivity.somefunction(native method) 04-15 14:06:31.610: e/androidruntime(22766): @ com.useofjniwithjava.mainactivity.oncreate(mainactivity.java:26) 04-15 14:06:31.610: e/androidruntime(22766): @ android.app.activity.performcreate(activity.java:5010) 04-15 14:06:31.610: e/androidruntime(22766): @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1079) 04-15 14:06:31.610: e/androidruntime(22766): @ android.app.activitythread.performlaunchactivity(activitythread.java:2041) 04-15 14:06:31.610: e/androidruntime(22766): @ android.app.activitythread.handlelaunchactivity(activitythread.java:2102) 04-15 14:06:31.610: e/androidruntime(22766): @ android.app.activitythread.access$600(activitythread.java:137) 04-15 14:06:31.610: e/androidruntime(22766): @ android.app.activitythread$h.handlemessage(activitythread.java:1210) 04-15 14:06:31.610: e/androidruntime(22766): @ android.os.handler.dispatchmessage(handler.java:99) 04-15 14:06:31.610: e/androidruntime(22766): @ android.os.looper.loop(looper.java:137) 04-15 14:06:31.610: e/androidruntime(22766): @ android.app.activitythread.main(activitythread.java:4838) 04-15 14:06:31.610: e/androidruntime(22766): @ java.lang.reflect.method.invokenative(native method) 04-15 14:06:31.610: e/androidruntime(22766): @ java.lang.reflect.method.invoke(method.java:511) 04-15 14:06:31.610: e/androidruntime(22766): @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:841) 04-15 14:06:31.610: e/androidruntime(22766): @ com.android.internal.os.zygoteinit.main(zygoteinit.java:608) 04-15 14:06:31.610: e/androidruntime(22766): @ dalvik.system.nativestart.main(native method)
example.c
#include <jni.h> #include <stdio.h> #include <conio.h> #include <com_useofjniwithjava_mainactivity.h> jniexport jint jnicall java_com_useofjniwithjava_mainactivity_somefunction__(jnienv * env, jobject obj) { return (jint)3; } jniexport void jnicall java_com_useofjniwithjava_mainactivity_somefunction__i(jnienv * env, jobject obj, jint x) { int xx = x; printf("%d\n",xx); return; } jniexport void jnicall java_com_useofjniwithjava_mainactivity_somefunction__ljava_lang_string_2(jnienv * env, jobject obj, jstring x) { return; }
header file created javah command
com_useofjniwithjava_mainactivity.h
/* not edit file - machine generated */ #include <jni.h> /* header class com_useofjniwithjava_mainactivity */ #ifndef _included_com_useofjniwithjava_mainactivity #define _included_com_useofjniwithjava_mainactivity #ifdef __cplusplus extern "c" { #endif /* * class: com_useofjniwithjava_mainactivity * method: somefunction * signature: ()i */ jniexport jint jnicall java_com_useofjniwithjava_mainactivity_somefunction__ (jnienv *, jobject); /* * class: com_useofjniwithjava_mainactivity * method: somefunction * signature: (ljava/lang/string;)v */ jniexport void jnicall java_com_useofjniwithjava_mainactivity_somefunction__ljava_lang_string_2 (jnienv *, jobject, jstring); /* * class: com_useofjniwithjava_mainactivity * method: somefunction * signature: (i)v */ jniexport void jnicall java_com_useofjniwithjava_mainactivity_somefunction__i (jnienv *, jobject, jint); #ifdef __cplusplus } #endif #endif
android.mk file
local_path:= $(call my-dir) include $(clear_vars) local_module := example local_cflags := -werror local_src_files := example.c local_ldlibs := -llog include $(build_shared_library)
mainactivitycode: here calling these native methods.
public class mainactivity extends activity { static { system.loadlibrary("example"); } public native int somefunction(); public native void somefunction(string str); public native void somefunction(int x); private final string tag = "mainactivity"; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); //setting content view setcontentview(r.layout.activity_main); log.i(tag, "oncreate"); //calling native method argument int somefunction(2); log.i(tag, "void method called succesfully."); //calling native method int x = somefunction(); log.i(tag, "x = " + x); } }
Comments
Post a Comment