I try run an Android application using ndk, i can build the library, but when i run give a exception.
follow the codes and error for help the solution
i use c code, instead cpp
primitive.c
#include <jni.h>
#include <android/log.h>
JNIEXPORT jboolean JNICALL Java_cookbook_chapter2_PassingPrimitiveActivity_passBooleanReturnBoolean(JNIEnv *pEnv, jobject pObj, jboolean pBooleanP){
__android_log_print(ANDROID_LOG_INFO, "native", "%d in %d bytes", pBooleanP, sizeof(jboolean));
return (!pBooleanP);}
Acitivity class: PassingPrimitiveActivity.java
public class PassingPrimitiveActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_passing_primitive);
StringBuilder strBuilder = new StringBuilder();
strBuilder.append("boolean: ").append(passBooleanReturnBoolean(false))");;
TextView tv = (TextView) findViewById(R.id.display_res);
tv.setText(strBuilder.toString());
}
private native boolean passBooleanReturnBoolean(boolean p);
static {
System.loadLibrary("PassingPrimitive");
} }
logcat file, with error. Show that don't have implementation, but in c code, have it
06-11 17:08:30.652 29603 29603 E AndroidRuntime: FATAL EXCEPTION: main
06-11 17:08:30.652 29603 29603 E AndroidRuntime: java.lang.UnsatisfiedLinkError: Native method not found: cookbook.chapter2.passingprimitive.PassingPrimitiveActivity.passBooleanReturnBoolean:(Z)Z
06-11 17:08:30.652 29603 29603 E AndroidRuntime: at cookbook.chapter2.passingprimitive.PassingPrimitiveActivity.passBooleanReturnBoolean(Native Method)
06-11 17:08:30.652 29603 29603 E AndroidRuntime: at cookbook.chapter2.passingprimitive.PassingPrimitiveActivity.onCreate(PassingPrimitiveActivity.java:15)
06-11 17:08:30.652 29603 29603 E AndroidRuntime: at android.app.Activity.performCreate(Activity.java:5184)
my Android.mk seens like it:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := PassingPrimitive
LOCAL_SRC_FILES := primitive.c
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
Everything compiles fine, creates a .so file and copies to the libs folder under my project, but when I run, logcat show UnsatisfiedLinkError and the app crash
What i can do for solve it?