多种类型的;java.lang.UnsatifiedLinkError“;Android中的错误
我使用android-ndk-r10e构建了so文件,并将so文件从服务器下载到/data/data/packagename.for.myapplication/myownso/armeabi-v7a/libtest.so 在加载库之前,我检查了文件的md5:多种类型的;java.lang.UnsatifiedLinkError“;Android中的错误,android,android-ndk,unsatisfiedlinkerror,Android,Android Ndk,Unsatisfiedlinkerror,我使用android-ndk-r10e构建了so文件,并将so文件从服务器下载到/data/data/packagename.for.myapplication/myownso/armeabi-v7a/libtest.so 在加载库之前,我检查了文件的md5: checkSoFileMD5(); System.load("/data/data/packagename.for.myapplication/myownso/armeabi-v7a/libtest.so"); 它在大多数情况下工作正常
checkSoFileMD5();
System.load("/data/data/packagename.for.myapplication/myownso/armeabi-v7a/libtest.so");
它在大多数情况下工作正常但是,我从用户那里收到了一些关于“java.lang.unsatifiedlinkerror”的错误日志
其中包括:
1. java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1934]: 107 missing essential tables
2. java.lang.UnsatisfiedLinkError: Cannot load library: get_lib_extents[845]: 574 - /data/data/packagename.for.myapplication/myownso/armeabi-v7a/libtest.so is not a valid ELF object
3. java.lang.UnsatisfiedLinkError: dlopen failed: "/data/data/packagename.for.myapplication/myownso/armeabi-v7a/libtest.so" is too small to be an ELF executable
4. java.lang.UnsatisfiedLinkError: dlopen failed: empty/missing DT_HASH in "libtest.so" (built with --hash-style=gnu?)
5. java.lang.UnsatisfiedLinkError: dlopen failed: invalid ELF file "/data/data/packagename.for.myapplication/myownso/armeabi-v7a/libtest.so" load segment[2]: p_offset (0x0) + p_filesz (0xd3ba58) ( = 0xd3ba58) past end of file (0x3a0000)
我可以确认碰撞设备CPU_ABI是armeabi-v7a
为什么会这样?为什么这些错误会发生在很少的设备上?它无法加载库,因为.so不是有效的ELF文件。如果你的编译是正确的ABI,那么它就有问题。但是为什么只在少数设备上发生呢?我无法复制它。