我有一个Android原生lib。我已经定义了JNI_OnLoad函数。一切都在使用android 2.3.7,但在android 4.4.2上,它说它无法找到我的JNI_OnLoad方法。因此,进一步调用我的原生方法失败了(显然)。
加载了lib(.so),并在加载后显示错误消息。
我已经三次检查拼写错误,方法签名不匹配等等......因为它适用于android 2.3.7,我怀疑问题就这么简单。
我还使用另一个本机lib进行了测试,它适用于两个版本。
我试图使用“好”的代码重写“错误”的lib,但它仍然无法在android 4.4上运行
我还阅读了android 4.4的更改日志,但没有发现任何相关的内容
有人有想法吗?
感谢
- 编辑 -
忘记提及.so上的readelf显示JNI_OnLoad:
192: 0000a214 252 FUNC GLOBAL DEFAULT 8 JNI_OnLoad
- GOT IT -
好吧,这真的很奇怪:我只是改变了我的lib的名字,它确实有效。碰巧我称我的lib为“sync”(libsync.so)。如果我将此名称更改为其他任何名称,那么它的工作原理。加载lib并调用其JNI_OnLoad函数。所以,要小心:不要调用本机lib“sync”
我稍后会将此作为答案发布,所以现在不允许这样做