Android NDK Método nativo no encontrado error
Estoy tratando de construir la aplicación de Android con código nativo por lo que quiero probar si ndk se ejecuta con éxito. Cuando intento ejecutar mi primer proyecto hola mundo log dice:
01-21 23:30:06.780: E/AndroidRuntime(939): FATAL EXCEPTION: main 01-21 23:30:06.780: E/AndroidRuntime(939): java.lang.UnsatisfiedLinkError: Native method not found: com.example.ndktesting.MainActivity.invokeNativeFunction:()Ljava/lang/String;
He comprobado algunas respuestas de stackoverflow pero no pude encontrar mi answer.Here es mi código para java yc Estoy usando android ndk r8d versión.
- ¿Qué dispositivos Android admiten jni?
- MuPdf Android JNI biblioteca es muy grande
- NDK que compila varias bibliotecas
- Integración o compilación de instrucciones para libjpeg-turbo en Android
- ¿Cómo puedo cargar mi propia clase Java en C en Android?
//ndktest.c #include <string.h> #include <jni.h> extern "C" { JNIEXPORT jstring JNICALL Java_com_example_ndktesting_ndktest_MainActivity_invokeNativeFunction(JNIEnv* env, jobject thiz) }; JNIEXPORT jstring JNICALL Java_com_example_ndktesting_ndktest_MainActivity_invokeNativeFunction(JNIEnv* env, jobject thiz) { return (*env)->NewStringUTF(env, "Hello from native code!"); }
Aquí está mi código Java de MainActivity
package com.example.ndktesting; public class MainActivity extends Activity { //declare the native code function - must match ndktest.c private native String invokeNativeFunction(); public native String unimplementedinvokeNativeFunction(); // load the library - name matches jni/Android.mk static { System.loadLibrary("ndktest"); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // this is where we call the native code String hello = invokeNativeFunction(); new AlertDialog.Builder(this).setMessage(hello).show(); } }
Código de archivo de Android:
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) # Here we give our module name and source file(s) LOCAL_MODULE := ndktest LOCAL_SRC_FILES := ndktest.c include $(BUILD_SHARED_LIBRARY)
- Uso de la función 'comodín' de Make en Android.mk
- No se puede ejecutar un programa Java Android con Valgrind
- WebP para Android
- Android NDK / JNI: error "No hay reglas para hacer objetivo" al compilar mi proyecto iOS / Android híbrido
- Alternativa de OpenSL ES en Android
- ¿Cómo crear callbacks entre código androide y código nativo?
- Android NDK - es compatible con código ARM recto o simplemente Thumb
- ¿Cómo ver las opciones reales de gcc al construir Android desde el origen?
Sus nombres de paquete / clase no coinciden.
JNIEXPORT jstring JNICALL Java_com_example_ndktesting_ndktest_MainActivity_invokeNativeFunction(JNIEnv* env, jobject thiz)
Sería un método en la clase
com.example.ndktesting.ndktest.MainActivity
Sin embargo, su código real
package com.example.ndktesting; public class MainActivity extends Activity
Hace que busque
com.example.ndktesting.MainActivity.invokeNativeFunction
Sin el "ndktest"
Una vez que haga coincidir los nombres, debería funcionar o exponer el siguiente problema.
- Android: No hay icono para la notificación
- No vea Android SDK y AVD Manager cuando ejecuta el comando de la herramienta android