Вам необходимо изменить на стороне c / c ++ два возможных способа в зависимости от того, как реализован ваш JNI.
A. Имя функции содержит полный путь к классу
<pre>
JNIEXPORT jlong JNICALL Java_"package with underscore instead of ."<em>"class"</em>"method"(JNIEnv *env, jclass class,...
, например
<pre>
JNIEXPORT jlong JNICALL Java_com_android_mms_transaction_NativeSms_send(JNIEnv *env, jclass class,...
метод сопоставления, отправленный в классе NativeSms в пакете com.android.mms.transaction
B. Есть строка, переданная обратно в dalvik / javaVM с помощью classpath. Ищите что-то вроде этого:
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 Уточненный первый пример