My job is android framework porting.
I got a lot of 3rd APK can't run on my Android Jelly Bean. (All of them are linker to libmono.so)
All of them are failed in JNI_OnLoad() function in libmono.so when they was runing. Below are my error log and analysis.
//1. Android dalvik vm native.cpp ( dvmLoadNativeCode(){ ...dlopen()...})
**D/dalvikvm(2629): Added shared lib /data/data/pl.idreams.jellydefense/lib/libmono.so 0xaed3a578**
//2. Android linker load libmono.so and return JNI_OnLoad function address // Android dalvik vm native.cpp ( dvmLoadNativeCode(){ ...dlsym(handle, "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 dalvik vm native.cpp ( dvmLoadNativeCode(){ ..version = (*func)(gDvmJni.jniVm, NULL);..}) // execute JNI_OnLoad function and return JNI version, libmono dump below error message
**E/linker(2629): ERROR: OOPS: 0 cannot map library 'libmono.so'. no vspace available.**
//4. libmono return JNI version = 0
**W/dalvikvm(2629): JNI_OnLoad returned bad version (0) in /data/data/pl.idreams.jellydefense/lib/libmono.so 0xaed3a578**
Can someone tell me why JNI_OnLoad failed in Libmono.so?
What does JNI_OnLoad do in Libmono.so? (Does I lose some module or share library?)
Thanks a lot, Chin ku