【问题标题】:Android jni GetMethID crashAndroid jni GetMethID 崩溃
【发布时间】:2016-04-11 19:36:50
【问题描述】:

我尝试用 jni 在 c 中构建一个 java 对象。并使用如下代码:

jmethodID method_cls_video_info_set_duration = (*env)->GetMethodID(env, cls_video_info, "setDuration", "(J)V");
LOGD("4");
jmethodID method_cls_video_info_set_audio_codec = (*env)->GetMethodID(env, cls_video_info, "setAudioCodec", "(Ljava/long/String;)V");
LOGD("11");
jmethodID method_cls_video_info_set_video_codec = (*env)->GetMethodID(env, cls_video_info, "setVideoCodec", "(Ljava/long/String;)V");
LOGD("9");

但是,我在这里遇到了崩溃:

jmethodID method_cls_video_info_set_video_codec = (*env)->GetMethodID(env, cls_video_info, "setVideoCodec", "(Ljava/long/String;)V");

日志是这样的:

    Build fingerprint: 'HONOR/PLK-UL00/HWPLK:6.0/HONORPLK-UL00/C17B352:user/release-keys'
pid: 4664, tid: 4728, name: ationTestRunner  >>> com.y <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Stack frame #00 pc 00042e4c  /system/lib/libc.so (tgkill+12)
Stack frame #01 pc 00041e35  /system/lib/libc.so (pthread_kill+32)
Stack frame #02 pc 0001bb53  /system/lib/libc.so (raise+10)
Stack frame #03 pc 00018db1  /system/lib/libc.so (__libc_android_abort+34)
Stack frame #04 pc 0001696c  /system/lib/libc.so (abort+4)
Stack frame #05 pc 003320e1  /system/lib/libart.so (art::Runtime::Abort()+232)
Stack frame #06 pc 000f4e1b  /system/lib/libart.so (art::LogMessage::~LogMessage()+2226)
Stack frame #07 pc 0025ac17  /system/lib/libart.so (art::JavaVMExt::JniAbort(char const*, char const*)+1550)
Stack frame #08 pc 0025afc5  /system/lib/libart.so (art::JavaVMExt::JniAbortV(char const*, char const*, std::__va_list)+64)
Stack frame #09 pc 000fda29  /system/lib/libart.so (art::ScopedCheck::AbortF(char const*, ...)+32)
Stack frame #10 pc 00102b3d  /system/lib/libart.so (art::ScopedCheck::Check(art::ScopedObjectAccess&, bool, char const*, art::JniValueType*) (.constprop.95)+5072)
Stack frame #11 pc 00113785  /system/lib/libart.so (art::CheckJNI::GetMethodID(_JNIEnv*, _jclass*, char const*, char const*)+396)
Stack frame #12 pc 00009843  /data/app/com.y-1/lib/arm/libffmpeg-jni.so (Java_com_y_ffmpeglib_FFmpegJNI_getVideoInfo+498): Routine get_format at /mnt/bin/ASWorkspace/YoEventV/ffmpeglibrary/jni/ffmpeg_mod.c:2395

【问题讨论】:

  • 能分享一下Java类吗?

标签: java android c java-native-interface


【解决方案1】:

我使用了错误的 String 类的包名是我的错。应该是

java/lang/String;

而不是

java/long/String;

.:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-29
    • 2017-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多