Tengo una implementación en funcionamiento de la biblioteca NDK y la correspondiente clase Java. Pero no puedo agregar el método sobrecargado a esa clase. Actualmente mi clase contiene:¿Cuál es la forma correcta de escribir firmas de métodos nativos en Android NDK?
package com.package;
public class MyClass
{
public static native String getFileName();
static
{
System.loadLibrary("mylib");
}
}
Mi archivo jniwrappers.cpp tiene la siguiente declaración:
bienJNIEXPORT jstring JNICALL
Java_com_package_MyClass_getFileName(_JNIEnv* env, jobject thiz);
Hasta este punto todo está funcionando. Pero la próxima modifico mi clase:
package com.package;
public class MyClass
{
public static native String getFileName();
public static native String getFileName(int index);
...
}
y añadir a jniwrappers.cpp otra declaración:
JNIEXPORT jstring JNICALL
Java_com_package_MyClass_getFileName__I(_JNIEnv* env, jobject thiz, jint index);
compila, se inicia la aplicación Android finas, no recibe UnsatisfiedLinkError pero cuando se llama al método con el segundo el argumento de que se llama a la primera función de C++ pero no a la segunda. Tengo otros métodos con argumentos en esa clase, pero ninguno de ellos está sobrecargado, por lo que sus respectivas firmas JNI no contienen argumentos.
Entonces, ¿qué estoy haciendo mal?
Esto fue lo primero que probé, pero algo salió mal y tengo UnsatisfiedLinkError. Ahora he vuelto a intentar esto y tengo todo funcionando. ¡Muchas gracias! –