Ich bin neu in JNI und Android. Ich möchte einen String-Wert aus dem nativen Code zurückgeben, aber bei der Ausführung gibt er eine Zufallszahl zurück. Ich kann nicht verstehen, was ich falsch mache.Android JNI - String Return als Zufallszahl
Meine "ndk.c" file:
int Java_com_example_mayankvijh_test_1app_MainActivity_main(){
return 3;
}
jstring JNICALL Java_com_example_mayankvijh_test_1app_MainActivity_getMessage(JNIEnv *env, jobject thiz) {
return (*env)->NewStringUTF(env,"HELLO");
}
Mein MainActivity.java
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try{
System.loadLibrary("wrapper");
}catch(Exception e)
{
e.printStackTrace();
}
System.out.println("main return =" + main());
System.out.println("Hi " + getMessage());
}
public native int main();
public native int getMessage();
ich die Bibliothek geladen haben (".so") erfolgreich und ich bin in der Lage Art JINT zurückzukehren und Anzeige in der App, aber irgendwie jstring gibt Zufallszahlen zurück.
Meine Mutterhauptfunktion int zurückkehrt und funktioniert, aber für meine getMessage() function string ist nicht
RückkehrMein Ausgang für getMessage():
Hi -429916127
Mein Application.mk
APP_ABI := armeabi-v7a
APP_PLATFORM := android-9
Mein Android.mk
LOCAL_PATH:=$(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := wrapper
LOCAL_C_INCLUDES := $(LOCAL_PATH)
LOCAL_SRC_FILES := ndk.c
LOCAL_LDLIBS := -landroid
#--llog -lz
include $(BUILD_SHARED_LIBRARY)
Danke für Ihre Hilfe.
Verwendung 'jobject thiz' statt' JClass dieses https://developer.android.com/ndk/samples/sample_hellojni.html bezieht cls' – Madhur
ich mit beiden versucht Es gibt eine zufällige negative Zahl zurück. Zur Zeit wurde 'Hi -253755359' –
'JNIEXPORT' zurückgegeben, um dieses Schlüsselwort zu entfernen. –