Tengo el siguiente escenario para trabajar. Me dieron una biblioteca compartida (libeffect.so) para usar en un proyecto de Android. Estoy trabajando para un cliente. No tengo el código fuente de la biblioteca compartida, solo tengo el archivo .so conmigo. La biblioteca está precompilada para funcionar en dispositivos Android. Junto con la biblioteca compartida tengo el método de firmaUso de la biblioteca compartida existente (.so) en la aplicación de Android
public static native void doEffect(int param1, IntBuffer intBuffer);
Así que ahora tengo algunas questiosn sobre cómo hacer la llamada a este método nativo, de la fuente, si esto es posible tener sólo el archivo .so, por lo que hay que son:
¿es necesario colocar la firma del método nativo en el mismo paquete/clase como los que se definen cuando el .so era o puedo usar esta firma en cualquier paquete/clase en mi proyecto que durante el tiempo de ejecución ¿el jvm podrá encontrar el método en la biblioteca compartida? Por ejemplo, si esta biblioteca compartida se utilizó por primera vez en una clase mypackage.MyClass, ¿necesito crear el mismo paquete, clase y luego poner la firma del método allí?
¿Dónde debo colocar este archivo .so dentro de mi proyecto eclipse de Android para que este archivo se implemente dentro de mi archivo apk?
Estos pregunta puede sonar novato, pero nunca he trabajado con jndi antes, así que estoy un poco preocupado si una llamada al método doEffect sin ningún tipo de error puede ser lograr. Cualquier respuesta que pueda guiarme es muy bienvenida.
Muchas Gracias Thiago
Gracias @Sujit. Estaba viendo este tutorial, http://www.android10.org/index.php/articlesother/276-call-c-code-from-application-using-ndk, y veo que el fragmento de código C++ generado tiene el nombre del método compuesto por el paquete java y el nombre del método. ¿Esto no afectará la forma en que uso la firma nativa? Pensé que debería seguir las mismas convenciones de nombre utilizadas cuando se creó la biblioteca compartida. Otra pregunta, una vez que tenga el archivo .so en mi carpeta AndroidProject/lib, ¿se exportará este archivo con el archivo APK? ¿Debo crear la carpeta sub armeabi? Muchas gracias, T – Thiago