Ich bin mit Android Studio 2.1.2 ich nicht Experimental Plugin bin mitAndroid Studio JNI mit C++ UnsatisfiedLinkError
Überprüfen Sie bitte die folgenden Dateien und Überprüfen Sie den Fehler Ich erhalte.
Ich löste das Problem. Editierte Datei ist wie folgt. Die Art und Weise, wie ich es behoben habe, ist möglicherweise nicht der richtige Weg, da ich die Eigenschaft veraltet benutze, aber es funktioniert. Das experimentelle Plugin kann immer noch instabil sein. Ich werde es bald mit dem experimentellen Plugin versuchen.
build.gradle von Modul
sourceSets.main {
jniLibs.srcDir 'src/main/libs'
/*jni.srcDirs = [] not using this, I commented this. Please check SO links which explained when to use this and when not to use this*/
}
folgenden 4 Dateien sind in jni Ordner Haupt
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := mylib
LOCAL_SRC_FILES := HelloJni.cpp
include $(BUILD_SHARED_LIBRARY)
Application.mk
APP_ABI := all
HelloJni .cpp
#include <jni.h>
#include <Header.h>
JNIEXPORT jstring JNICALL Java_com_example_m1035325_ndksampleapp_MainActivity_getStringFromJni(JNIEnv *env,jobject thiz)
{
env-> NewStringUTF ("Hellofrom JNI!");
}
header.h
#include <jni.h>;
using namespace std;
#ifndef HEADER
#define HEADER
extern "C" {
JNIEXPORT jstring JNICALL Java_com_example_m1035325_ndksampleapp_MainActivity_getStringFromJni(JNIEnv *env, jobject obj);
}
#endif //NDKSAMPLEAPP_HEADER_H
MainActicity.java
static
{
System.loadLibrary("mylib");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView tvHello=(TextView)findViewById(R.id.tvHello);
tvHello.setText(getStringFromJni());
}
public native String getStringFromJni();
hier, wenn ich auf Verfahren schweben getStringFromJni es zeigt Kann JNI-Funktion entsprechende
ich nicht lösen Set NDK-Pfad in der Projektstruktur und in der Pfad-Umgebungsvariablen auch.
erhalte ich folgende Fehler
Process: com.example.m1035325.ndksampleapp, PID: 12831
java.lang.UnsatisfiedLinkError: No implementation found for java.lang.String com.example.m1035325.ndksampleapp.MainActivity.getStringFromJni() (tried Java_com_example_m1035325_ndksampleapp_MainActivity_getStringFromJni and Java_com_example_m1035325_ndksampleapp_MainActivity_getStringFromJni__)
at com.example.m1035325.ndksampleapp.MainActivity.getStringFromJni(Native Method)
ich SO auch viel gesucht, aber ich immer bin nicht, was ich verpasst?
Kein Fehler jetzt, oben ist der Fehler behoben. Bitte überprüfen Sie meine Antwort auf diese Frage.
Sie vermissen 'JNICALL', die Signatur sollte mit' JNIEXPORT jstring JNICALL' beginnen, – marcinj
Danke für die Eingaben. Ja du hast Recht. Ich habe es in meiner Datei hinzugefügt. Bitte überprüfen Sie meine bearbeiteten Dateien oben. – AdiAtAnd