Android の Java クラスから C クラスで定義した Native メソッドを呼び出そうとしています。両方のコードを以下に示します。
Cpp
NativeCall.h
// NativeCall.h
#ifdef __cplusplus
#include "platform/android/jni/JniHelper.h"
#include "NativeInterface.h"
using namespace std;
extern "C" {
#endif
JNIEXPORT jstring JNICALL Java_com_sugarcube_Connect_JniHelper_makeNativeCall(JNIEnv *env, jobject thiz, jstring request)
{
string returnValue = NativeInterface::getInstance()->processApiCall(env->GetStringUTFChars(request,0));
jstring str = env->NewStringUTF(returnValue.c_str());
return str;
}
#ifdef __cplusplus
}
#endif
NativeCall.cpp
#include "NativeCall.h"
Java コード
public String invokeNativeCall(String request){
return makeNativeCall(request);
}
private native String makeNativeCall(String request);
PackageName : com.sugarcube.Connect JavaClassName : JniHelper.java
また、NativeCall.cpp を android.mk ファイルに追加しました
私がinvokeNativeCallを実行しようとするたびに、それがぶつかります
JniHelper.makeNativeCall(String) line: not available[native method][local variables unavailable].
なぜこれが起こっているのですか?