处理JNI DETECTED ERROR IN APPLICATION: GetStringUTFChars received NULL jstring的崩溃 case 要注意实际的调用栈

本文探讨了如何解决JNIDETECTEDERRORINAPPLICATION在Android应用中遇到的GetStringUTFChars接收空jstring的问题,强调了通过崩溃堆栈分析来定位真正引发错误的代码区域,避免无效排查。

如题,最近fix历史的坑— JNI DETECTED ERROR IN APPLICATION: GetStringUTFChars received NULL jstring 的case
然后很自信的根据如下信息去排查代码,结果做了几个小时的无用功。

A/k.myapplicatio: java_vm_ext.cc:545] JNI DETECTED ERROR IN APPLICATION: GetStringUTFChars received NULL jstring
    java_vm_ext.cc:545]     in call to GetStringUTFChars
    java_vm_ext.cc:545]     from void com.sdk.myapplication.MainActivity.triggerGetStringUTFCharsNPE(java.lang.String, java.lang.String)

原因上面的出现信息中, from 某个Jni的方法是指JVM调到该方法后GetStringUTFChars入参jstring为空的情况,必不是特指该方法体中调GetStringUTFChars的地方出现了NULl指针,而是包括该方法中调用其它的C/C++方法出现NULL指针的情况。所以我们去定位这类问题,还是要细仔看个崩溃堆栈,才能快速定位到是那个地方产出的NULL指针,避免无效输出
在这里插入图片描述
如上示例是根据自己的业务代码,抽像出来的
示例代码如下
java

public class MainActivity extends AppCompatActivity {

    // Used to load the 'native-lib' library on application startup.
    static {
       
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值