您需要在 c/c++ 方面进行更改,根据 JNI 的实现方式,有两种可能的方式。
A. 函数名包含完整的类路径
JNIEXPORT jlong JNICALL Java_"package with underscore instead of .""class""method"(JNIEnv *env, jclass class,...
例如
JNIEXPORT jlong JNICALL Java_com_android_mms_transaction_NativeSms_send(JNIEnv *env, jclass class,...
com.android.mms.transaction 包中的 NativeSms 类中的匹配方法发送
B. 有一个带有类路径的字符串返回给 dalvik/javaVM。寻找这样的东西:
static int registerMethods(JNIEnv* env) {
static const char* const kClassName =
"com/example/android/platform_library/PlatformLibrary";
jclass clazz;
/* look up the class */
clazz = env->FindClass(kClassName);
if (clazz == NULL) {
LOGE("Can't find class %s\n", kClassName);
return -1;
}
/* register all the methods */
if (env->RegisterNatives(clazz, gMethods,
sizeof(gMethods) / sizeof(gMethods[0])) != JNI_OK)
{
LOGE("Failed registering methods for %s\n", kClassName);
return -1;
}
...
编辑 2011-12-07 澄清第一个例子