解决“ERROR: couldn't find native method”方法

本文解决了Android应用中出现的“找不到Native方法”的错误。通过禁用mk文件中的代码混淆功能,确保应用程序能够正确调用Native库。此问题通常发生在尝试调用本地方法时。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对比了下native 函数传参返回值 ,看起来没错,但就是报没找到native函数,但是用历史遗留已经Build出来的apk就没有这个问题。
所以问题应该出现在apk的mk 文件里面。
后来搜索E/dalvikvm( 2456): ERROR: couldn’t find native method的关键字找到了解决方法:
在mk文件里面加入这一行:LOCAL_PROGUARD_ENABLED := disabled
如果没加的话就会混淆代码进行优化,可能导致native文件找不到而出现问题。

2016_12_26_14_43_37:I/        (  345): Mic: loading JNI
2016_12_26_14_43_37:E/dalvikvm(  345): ERROR: couldn't find native method
2016_12_26_14_43_37:E/dalvikvm(  345): Requested: Lcom/autochips/mic/Mic;.nativeMicSet3GSimDet:(I)Z
2016_12_26_14_43_37:E/JNIHelp (  345): RegisterNatives failed for 'com/autochips/mic/Mic', aborting

LOCAL_PROGUARD_ENABLED默认是打开的,不特别指定的话,就是起作用的,就可能做优化。这个功能让我想起来了,很早以前做很底层寄存器操作的时候,要加上volitate 来防止编译器做优化一样。

参考博客文章:http://blog.youkuaiyun.com/edsam49/article/details/36466197?utm_source=tuicool&utm_medium=referral

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值