我有一个纯粹的本机应用程序,因为我用的是android_native_app_glue和入口点到我的应用程序是findClass的找不到定制的Java类
android_main(..)
我也有一个Java助手类类型:
package abc.def.ghi
public class MyJavaClass extends Activity
{
public void callback()
{
Log.v(TAG, "In MyJavaClass");
}
}
我想从本地调用“回调”方法。我这样做:
jclass myClass = env->FindClass("abc/def/ghi/MyJavaClass");
if(myClass == NULL)
LOGI("myClass null");
jmethodID mid = m_pEnv->GetMethodID(myClass, "callback", "()V");
if(mid == NULL)
LOGI("MID null");
m_pEnv->CallVoidMethod(myClass, mid);
但是,这会导致myClass为空的消息。我的'env'指针应该没问题,因为当我在FindClass中传递“android/os/build”时,它会找到它,但找不到我的自定义类。
在LOGCAT中,我看到: “JNI警告:无法调用Labc/def/ghi;对Ljava/Lang/Class实例进行回调;”
我认为这意味着我的CallVoidMethod的第一个参数有问题。 我注意到,大多数人与被JAVAH生成的签名函数内履行CallVoidMethod其他例子,它们使用obj
参数在他们CallVoidMethod
:
JNIEXPORT void JNICALL function(JNIEnv *env, jobject obj, jstring s)
不过我,因为我的应用程序的不能使用此入口点是本地的。