FindClass no puede encontrar la clase Java personalizada
Tengo una aplicación puramente nativa, ya que uso el android_native_app_glue y el punto de entrada a mi aplicación es
android_main(..)
También tengo una clase de Java tipo auxiliar:
- Declaración implícita incompatible de la función incorporada Advertencia Uso de NDK con LAME
- No se puede iniciar cygpath en android
- ¿Utilizar un archivo mapeado en memoria como un archivo de intercambio?
- Cómo obtener un contexto de una actividad nativa
- Utilizar bibliotecas jni de 32 bits en android de 64 bits
package abc.def.ghi public class MyJavaClass extends Activity { public void callback() { Log.v(TAG, "In MyJavaClass"); } }
Quiero llamar al método 'callback' desde nativo. Lo hago por:
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);
Sin embargo esto da como resultado un mensaje que myClass es null. Mi puntero 'env' debería estar bien porque cuando paso "android / os / build" en FindClass, lo encuentra, pero no puedo encontrar mi clase personalizada.
En el LOGCAT, veo: "Advertencia de JNI: No se puede llamar a Labc / def / ghi; callback en instancia de Ljava / Lang / Class;"
Creo que esto significa que algo está mal con el primer parámetro de mi CallVoidMethod. Noté en los otros ejemplos que la mayoría de la gente realiza su CallVoidMethod dentro de una función con una firma que es generada por javah, y utilizan el parámetro obj
en su CallVoidMethod
:
JNIEXPORT void JNICALL function(JNIEnv *env, jobject obj, jstring s)
Sin embargo no puedo usar esto porque el punto de entrada de mi aplicación es en nativo.
- Cómo convertir char a jstring en JNI?
- Compilación de Android JNI para OpenCV en Mac OSX
- ¿Cómo arreglar el archivo libgnustl_shared.so duplicado que en sdks de terceros?
- Android NDK desborda la tabla de referencia local JNI de dalvik
- Desbordamiento de ReferenceTable (máx = 512) JNI
- Android - Directrices JNI
- Módulos anidados ndk de Android
- ¿Cómo puedo depurar eficazmente el código C que está envuelto con JNI en Eclipse? (Android Dev)
Sin embargo esto da como resultado un mensaje que myClass es null. Mi puntero 'env' debería estar bien porque cuando paso "android / os / build" en FindClass, lo encuentra, pero no puedo encontrar mi clase personalizada.
Esto sugeriría que sus clases personalizadas no están en el classpath.
Tenga en cuenta que al crear una máquina virtual puede pasar opciones, incluida la configuración de classpath para incluir el directorio actual (o donde lo desee).
- Android Market dice que mi aplicación "no está en el grupo de destino" o que "no se puede instalar en este dispositivo"
- Android adb velocidad usb