高分跪求大侠帮忙:
1 下面是我的JAVA工作路径和工程目录情况
TestCommon_Android(java workspace)
.metadata(workspace config)
TestBaseThread(project folder)
assets(folder)
bin(folder)
gen(folder)
jni(folder)
Android.mk(belong to jni)
Application.mk(belong to jni)
com_Android_oray_TestBaseThread_TestBaseThread.cpp(belong to jni)
com_Android_oray_TestBaseThread_TestBaseThread.h(belong to jni)
stdafx.h(代码是从VC里移过来的,为防止编译报错加了个这个, (belong to jni))
TestThread.cpp(belong to jni)
TestThread.h(belong to jni)
libs(folder)
armeabi(folder, belong to libs)
libTestBaseThread_jni.so(armeabi下的,这个NDK编译生成的)
src
我的Android.mk :
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := TestBaseThread_jni
LOCAL_SRC_FILES := TestThread.cpp \
com_Android_oray_TestBaseThread_TestBaseThread.cpp \
./../../../../common/thread/BaseThread.cpp
LOCAL_LDLIBS := -lm -llog
#LOCAL_CPPFLAGS := -D_STLP_USE_SIMPLE_NODE_ALLOC
LOCAL_C_INCLUDES += \
/cygdrive/e/Software/android.setup/android-ndk-r5-windows/android-ndk-r5/sources/cxx-stl/stlport/stlport \
$(JNI_H_INCLUDE)
include $(BUILD_SHARED_LIBRARY)
我的Application.mk:
# The ARMv7 is significanly faster due to the use of the hardware FPU
#APP_ABI := armeabi armeabi-v7a
APP_CPPFLAGS += -fexceptions
APP_STL := stlport_shared
APP_CPPFLAGS += -frtti
我的com_Android_oray_TestBaseThread_TestBaseThread.h
- C/C++ code
/* DO NOT EDIT THIS FILE - it is machine generated */#include <jni.h>/* Header for class com_Android_oray_TestBaseThread_TestBaseThread */#ifndef _Included_com_Android_oray_TestBaseThread_TestBaseThread#define _Included_com_Android_oray_TestBaseThread_TestBaseThread#ifdef __cplusplusextern "C" {#endif/* * Class: com_Android_oray_TestBaseThread_TestBaseThread * Method: testThread * Signature: ()V */JNIEXPORT void JNICALL Java_com_Android_oray_TestBaseThread_TestBaseThread_testThread (JNIEnv *, jobject);#ifdef __cplusplus}#endif#endif
我的com_Android_oray_TestBaseThread_TestBaseThread.cpp
- C/C++ code
#include "TestThread.h"#include "com_Android_oray_TestBaseThread_TestBaseThread.h"#include <android/log.h>#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))#define JNIREG_CLASS "com/Android/oray/TestBaseThread/TestBaseThread"#define LOG_TAG "TestBaseThread"#define LOGI(...) __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)#ifdef __cplusplusextern "C" {#endif /* * Class: com_Android_oray_TestBaseThread_TestBaseThread * Method: ThreadTest * Signature: ()V */JNIEXPORT void JNICALL Java_com_Android_oray_TestBaseThread_TestBaseThread_testThread (JNIEnv *, jobject) { LOGE("jni OnLoad .............. \n"); CTestThread oMyTestThread; oMyTestThread.Run(); } /** * Table of methods associated with a single class. */ static JNINativeMethod gMethods[] = { { "ThreadTest", "()V", (void*)Java_com_Android_oray_TestBaseThread_TestBaseThread_testThread }, }; JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { jint r; jclass k; JNIEnv *env; jint i, size = ARRAY_SIZE(gMethods); r = vm->GetEnv((void **)&env, JNI_VERSION_1_4); k = env->FindClass(JNIREG_CLASS); for (i = 0; i < size; i++) { r = env->RegisterNatives(k, &gMethods[i], i+1); } return JNI_VERSION_1_4; } #ifdef __cplusplus}#endif