报错log为:
D/dalvikvm( 1010): Trying to load lib /data/data/com.mediatek.cmmb.app/lib/libcmmbsp.so 0x4051bb80W/System.err( 1010): java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1346]:    86 cannot locate '_ZN7android7RefBase14moveReferencesEPvPKvjRKNS_22ReferenceConverterBaseE'...W/System.err( 1010): at java.lang.Runtime.load(Runtime.java:425)libcmmbsp.so在4.0平台是OK的,运行在2.3平台报错,是因为版本问题吗?感觉so库不会因为版本出问题啊??
没有so源码,所以不知怎么办?求大侠指点。

解决方案 »

  1.   

    库是JNI里的东西,应该不存在吧。我也不知道,木有源码表示头疼,不知道里面写的什么。
      

  2.   

    确定跟so文件库文件时没有关系的,显然报错信息是没有找到你指给他的库文件,自己手动push一下,找的好像是这个路径 /data/data/com.mediatek.cmmb.app/lib/libcmmbsp.so,或者把这里和system/lib下都push一下试试。
      

  3.   

    不同版本的android源码改动量还是挺大的,从log看是因为链接不到库中的函数,最好还是把那个库的源码放在对应的android项目中看能不能编过。
      

  4.   

    你应该指定ndk-build平台与ApplicationManifest中的min SDK兼容。
     
      

  5.   

    它是不能定位这个函数的。
    android::RefBase::moveReferences(void*, void const*, unsigned int, android::ReferenceConverterBase const&)这个函数在Android 4.0之前的版本是没有的。这是一个内部库函数,不属于NDK。只能在android平台代码本身使用。
      

  6.   

    也就是说,如果没有源码,这个app以及一套的so 在2.3都是无效的,也就是作废的?
      

  7.   

    我告诉你把,.so使用的话,得把你的包名,类名,方法名,设置的跟.so里面一样,才能使用.so
      

  8.   

    你可以找找原来的.so使用的时候,对应的工程的包名,类名,方法名,只能设置的跟原来工程的一模一样,才能使用这个.so。其他人说的什么版本兼容不兼容,完全没关系,把你引入歧途。
      

  9.   

    这么说吧,这个app和so本来就是一套的,是4.0上运行OK的,然后移植到2.3的版本报错。因为之前本来就是一套的,所以包名,类名,方法名都是一样的吧?
      

  10.   


    用4.0编出来的库在2.3上用,当然有可能有问题
    W/System.err( 1010): java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1346]:    86 cannot locate '_ZN7android7RefBase14moveReferencesEPvPKvjRKNS_22ReferenceConverterBaseE'...这已经明确告诉你说RefBase::moveReferences 没找到。
    我在gingerbread上查了,确实没有,是ics才加的。
      

  11.   


    sorry,我没看明白楼主问题,其实楼主的意思是只是换了android版本,并未重新新建工程使用.so 我错了