私はJNIとAndroidを初めて使用しています。ネイティブコードから文字列値を返したいが、実行時に乱数を返す。私は何が間違っているのか理解できません。Android JNI - 乱数として返される文字列
マイ "ndk.c" ファイル:
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");
}
マイ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();
私は成功したライブラリー( ".soの")をロードしていると私はタイプJINTを返すことができていますアプリに表示されますが、何とかjstringが乱数を返しています。
Hi -429916127
マイApplication.mk
:私のネイティブの主な機能がintを返していると作業が、私のgetMessage()関数文字列がのgetMessage()のための私の出力を返すされていないためにされて
APP_ABI := armeabi-v7a
APP_PLATFORM := android-9
マイ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)
ご協力いただきありがとうございます。
使用' jオブジェクトthiz'は、私は両方を試してみました。このhttps://developer.android.com/ndk/samples/sample_hellojni.html – Madhur
を参照してくださいcls' 、それはランダムな負の数を返しています。現在、 'Hi -253755359' –
'JNIEXPORT'がこのキーワードを削除しました。 –