Soy nuevo en jni, y estaba repasando un tutorial para implementar un método nativo simple, pero estoy obteniendo un error insatisfecho. Por lo que sé, seguí los pasos en el tutorial exactamente. Por favor, ayúdame.Uso de jni en Android: UNsatisfiedLinkError
Aquí está el código de Java envoltorio:
package com.cookbook.jni;
public class SquaredWrapper {
// Declare native method (and make it public to expose it directly)
public static native int squared(int base);
// Provide additional functionality, that "extends" the native method
public static int to4(int base)
{
int sq = squared(base);
return squared(sq);
}
// Load library
static {
System.loadLibrary("squared");
}
}
Esto es lo que se ve mi archivo Android.mk como:
LOCAL_PATH: = $ (llamar a mi-dir)
incluyen $ (CLEAR_VARS)
LOCAL_MODULE: = cuadrado LOCAL_SRC_FILES: = squared.c
incluyen $ (BUILD_SHARED_LIBRARY)
Esto es lo que se ve mi archivo .c como:
#include "squared.h"
#include <jni.h>
JNIEXPORT jint JNICALL Java_org_edwards_1research_demo_jni_SquaredWrapper_squared
(JNIEnv * je, jclass jc, jint base)
{
return (base*base);
}
Y aquí es lo que parece mi archivo .h como:
enter code here/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_cookbook_jni_SquaredWrapper */
#ifndef _Included_com_cookbook_jni_SquaredWrapper
#define _Included_com_cookbook_jni_SquaredWrapper
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_cookbook_jni_SquaredWrapper
* Method: squared
* Signature: (I)I
*/
JNIEXPORT jint JNICALL Java_com_cookbook_jni_SquaredWrapper_squared
(JNIEnv *, jclass, jint);
#ifdef __cplusplus
}
#endif
#endif
Muchas gracias. Me siento estupido. Acabo de copiar y pegar el archivo c del tutorial, pero utilicé un nombre de paquete diferente que él. De ahí el desajuste. No he oído hablar de esa segunda forma. ¿Podría publicar un enlace a algún lugar donde pueda leer más sobre él? Gracias de nuevo. – user1487736
Claro, el método que prefiero es usar JNI_OnLoad: http://developer.android.com/guide/practices/jni.html#native_libraries y mantener una matriz de todas mis funciones y firmas. Déjame escribir un código de ejemplo y voy a editar mi respuesta. – AlcoJaguar