我的工作是android框架移植。
我有很多第三次APK不能在我的Android果冻豆上运行。(它们都是libmono.so的链接器)
在运行时,它们都在JNI_OnLoad()函数libmono.so中失败。下面是我的错误日志和分析。
//1. Android native.cpp ( dvmLoadNativeCode(){ ...dlopen().})
**D/dalvikvm(2629): Added shared lib /data/data/pl.idreams.jellydefense/lib/libmono.so 0xaed3a578**//2. Android链接器加载libmono.so并返回JNI_OnLoad函数地址// Android native.cpp ( dvmLoadNativeCode(){ ...dlsym(句柄,“JNI_OnLoad”).})
**D/linker(2629): TRACE: 1252 SEARCH JNI_OnLoad in libmono.so@0xa5cf9000 0467e784 86**
**D/linker(2629): TRACE: 1252 FOUND JNI_OnLoad in libmono.so (0000a3a4) 340**//3. Android native.cpp ( dvmLoadNativeCode(){ ..version = (*func)(gDvmJni.jniVm,NULL);..}) //执行JNI_OnLoad函数并返回JNI版本,libmono转储在错误消息下面
**E/linker(2629): ERROR: OOPS: 0 cannot map library 'libmono.so'. no vspace available.**//4. libmono返回JNI版本=0
**W/dalvikvm(2629): JNI_OnLoad returned bad version (0) in /data/data/pl.idreams.jellydefense/lib/libmono.so 0xaed3a578**有人能告诉我为什么JNI_OnLoad在Libmono.so?上失败了吗?
JNI_OnLoad在Libmono.so做什么?(我是否丢失了某些模块或共享库?)?
非常感谢,金库
发布于 2012-09-06 11:27:48
看起来你的应用程序试图分配太多的内存,而Android已经够了。原因不一定是您的libmono.so (或者加载它的类,尽管它们可能是罪魁祸首),它恰好发生在加载该库期间。
本机库的JNI_OnLoad()函数返回一个JNI版本以表示它能够继续,如果它确定不能继续,则返回0。它看起来是一个失败的分配导致它返回0,以表示它不能初始化,因此不能使用。
至于“无法映射库‘libuni.so’,没有vspace可用。”--这是一个开源项目,对吗?我可以想象,您将毫不费力地找到JNI_OnLoad源代码来自己回答这个问题。
https://stackoverflow.com/questions/12298790
复制相似问题