JNI DETECTED ERROR IN APPLICATION: use of invalid jobject 0xe7428c54

20756/com.tencent.mobileqq A/art: art/runtime/java_vm_ext.cc:470] JNI DETECTED ERROR IN APPLICATION: use of invalid jobject 0xe7428c54
    art/runtime/java_vm_ext.cc:470]     from java.lang.Object cn.qssq666.EncryptUtilN.cCAndEnsureResource(android.content.Context, java.lang.Object, java.lang.String)
    art/runtime/java_vm_ext.cc:470] "main" prio=5 tid=1 Runnable
05-15 14:09:05.398 20756-20756/com.tencent.mobileqq A/art: art/runtime/java_vm_ext.cc:470]   | group="main" sCount=0 dsCount=0 obj=0x74461000 self=0xe8884400
    art/runtime/java_vm_ext.cc:470]   | sysTid=20756 nice=0 cgrp=default sched=0/0 handle=0xeb505538
    art/runtime/java_vm_ext.cc:470]   | state=R schedstat=( 1554418176 77637721 532 ) utm=135 stm=20 core=5 HZ=100
    art/runtime/java_vm_ext.cc:470]   | stack=0xff2ea000-0xff2ec000 stackSize=8MB
    art/runtime/java_vm_ext.cc:470]   | held mutexes= "mutator lock"(shared held)
    art/runtime/java_vm_ext.cc:470]   native: #00 pc 003577e5  /system/lib/libart.so (_ZN3art15DumpNativeStackERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEEiP12BacktraceMapPKcPNS_9ArtMethodEPv+128)
    art/runtime/java_vm_ext.cc:470]   native: #01 pc 00337dc1  /system/lib/libart.so (_ZNK3art6Thread9DumpStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEEbP12BacktraceMap+304)
    art/runtime/java_vm_ext.cc:470]   native: #02 pc 0023ba63  /system/lib/libart.so (_ZN3art9JavaVMExt8JniAbortEPKcS2_+846)
    art/runtime/java_vm_ext.cc:470]   native: #03 pc 0023c00f  /system/lib/libart.so (_ZN3art9JavaVMExt9JniAbortFEPKcS2_z+66)
    art/runtime/java_vm_ext.cc:470]   native: #04 pc 0033b85b  /system/lib/libart.so (_ZNK3art6Thread13DecodeJObjectEP8_jobject+302)
    art/runtime/java_vm_ext.cc:470]   native: #05 pc 0031a261  /system/lib/libart.so (_ZN3art8ArgArray24BuildArgArrayFromVarArgsERKNS_33ScopedObjectAccessAlreadyRunnableEPNS_6mirror6ObjectESt9__va_list+176)
    art/runtime/java_vm_ext.cc:470]   native: #06 pc 0031b23d  /system/lib/libart.so (_ZN3art35InvokeVirtualOrInterfaceWithVarArgsERKNS_33ScopedObjectAccessAlreadyRunnableEP8_jobjectP10_jmethodIDSt9__va_list+240)
    art/runtime/java_vm_ext.cc:470]   native: #07 pc 002684eb  /system/lib/libart.so (_ZN3art3JNI17CallObjectMethodVEP7_JNIEnvP8_jobjectP10_jmethodIDSt9__va_list+442)
    art/runtime/java_vm_ext.cc:470]   native: #08 pc 00008693  /data/app/cn.qssq666.redpacket-2/lib/arm/libhlkq.so (???)
    art/runtime/java_vm_ext.cc:470]   native: #09 pc 00008f87  /data/app/cn.qssq666.redpacket-2/lib/arm/libhlkq.so (???)
    art/runtime/java_vm_ext.cc:470]   native: #10 pc 0001b54d  /data/app/cn.qssq666.redpacket-2/oat/arm/base.odex (Java_cn_qssq666_EncryptUtilN_cCAndEnsureResource__Landroid_content_Context_2Ljava_lang_Object_2Ljava_lang_String_2+144)
    art/runtime/java_vm_ext.cc:470]   at cn.qssq666.EncryptUtilN.cCAndEnsureResource(Native method)
    art/runtime/java_vm_ext.cc:470]   at 
    art/runtime/java_vm_ext.cc:470]   at android.os.Handler.handleCallback(Handler.java:754)
    art/runtime/java_vm_ext.cc:470]   at android.os.Handler.dispatchMessage(Handler.java:95)
    art/runtime/java_vm_ext.cc:470]   at android.os.Looper.loop(Looper.java:163)
    art/runtime/java_vm_ext.cc:470]   at android.app.ActivityThread.main(ActivityThread.java:6342)
    art/runtime/java_vm_ext.cc:470]   at java.lang.reflect.Method.invoke!(Native method)
    art/runtime/java_vm_ext.cc:470]   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880)
    art/runtime/java_vm_ext.cc:470]   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:770)
    art/runtime/java_vm_ext.cc:470]   at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:107)
    art/runtime/java_vm_ext.cc:470] 

无效的jobject对象,那么这个定位到了哪个方法崩溃了,那么是哪个队导致的呢?通过%p输出地址,说是path地址错了,

path打印发现不为空,但是不确定是啥子类型,虽然我是声明了一个jstring的,但是他估计已经不是jstring了,经过参数比对,我怀疑是我对不太理解的写法搞得.

比如

 jobject abc(JNIEnv *env, jclass type,  jobject  context,jstring str)

对应java代码
public static void abc(Context context,String str)
但是如果在jclass type之后再加上一个jobject thiz呢??
jobject abc(JNIEnv *env, jclass type, jobject thiz, jobject context,jstring str)

如果不使用参数一切正常,使用参数的时候 后者就出现 这错误了...
最后看看android studio自动生成是如何写的??


extern "C" JNIEXPORT jstring JNICALL
Java_cn_qssq666_redpacket_qq694886526_JNIPro_getSupportInfoN(JNIEnv *env, jclass type) {

    // TODO


    return env->NewStringUTF("不支持(请关注官方群或本软件中软件更新链接)");
}

猜测,可能非静态需要这样写,这个问题暂时不管了。以后再继续研究,我现在时间太紧,来不及深究。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • 人们总习惯在盲目中寻找着本不属于自己的东西却忘记了他的生命里该有的印记和当初的为什么出发去寻找梦寐以求的目的地 灵...
    强强爱做梦阅读 176评论 1 1
  • 1.你的悲伤给谁看呢 叶小猫和许庭分手时,感觉不到心疼,就是觉得生活空乏得紧,于是三天两头给卡子打电话,报告自己一...
    悟恩说事阅读 508评论 1 1
  • 有些同学表示:我想在美国工作一段时间,我知道IT行业给国际学生的机会最多,我也知道码农工作最好找,但是,我就是不!...
    datascience101阅读 816评论 0 0