0
추신 : 실제로 작동하고 있습니다. 곧이 질문을 업데이트하겠다는 또 다른 문제가 있습니다.Android에서 C++에서 Java 코드를 호출하면
나는 다음과 같은 네이티브 코드가 있습니다
JNIEXPORT void JNICALL Java_com_rmsdk_wrapper_RMServices_init(JNIEnv *env, jobject thiso,
jstring prodName, jstring version) {
jclass thisClass = env->GetObjectClass(thiso);
__android_log_print(ANDROID_LOG_DEBUG, "APP", "[findMethodId]");
jmethodID getDeviceName = env->GetMethodID(thisClass, "getDeviceName", "()Ljava/lang/String;");
__android_log_print(ANDROID_LOG_DEBUG, "APP", "[invoke]");
jstring dvcName = (jstring) env->CallObjectMethod(thiso, getDeviceName);
__android_log_print(ANDROID_LOG_DEBUG, "APP", "[strings retrivied]");
그리고 자바 클래스
public String getDeviceName() {
String deviceName = Build.MODEL;
LogU.v("APPServices", "getDeviceName("+deviceName+")");
return deviceName;
}
에서 각각의 방법을하지만, 다음을 실행할 때 발생합니다
D/RMSDK:DRM(3717): [findMethodId]
D/RMSDK:DRM(3717): [invoke]
I/DEBUG(27674): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG(27674): Build fingerprint: 'MOTO/PORTLA/wifi_hubble:3.2/H.6.6-27/1317781165:user/ota-rel-keys,release-keys'
I/DEBUG(27674): pid: 3717, tid: 3717 >>> br.com.abril.iba <<<
I/DEBUG(27674): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
I/DEBUG(27674): r0 00000000 r1 40c33038 r2 5651b1ec r3 be86444c
I/DEBUG(27674): r4 0000008c r5 8282a018 r6 82805e28 r7 826f0a68
방법은 발견되었지만 호출 할 때 충돌합니다 (어떤 방법이든). 어떻게 해결할 수 있습니까? 왜 작동하지 않는 지 모르겠습니다.
PS : 같은 오류가 귀하의 코드 내 HTC의 디자 이어 Z에 잘 실행
thiso가 NULL이 아닌 것은 확실합니까? 그리고 thisClass가 NULL이 아닌가? 그리고 getDeviceName이 NULL이 아닌가? –
그래, = / –