`

.so兼容32位和64位

    博客分类:
  • jni
 
阅读更多

安卓的兼容性是一个很令人头疼的问题,这几天又遇到了,还好还是解决了。

我遇到的问题是,我在网上下载了一个功能库,里面带了一个xxx.so动态库,问题它是32位的。但是,早两天拿了一台arm-64位的手机进行测试时,发现它居然崩溃了!泪崩了好久...

 

起初报错信息是:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.xxx.xxx-1/base.apk"],nativeLibraryDirectories=[/data/app/com.xxx.xxx-1/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "xxx.so",
幸运的我还是找到了解决的办法:

1.在build.gradle中配置如下:

android {
    ...
defaultConfig {
....
ndk {
moduleName"native"
abiFilters"armeabi","armeabi-v7a","x86","mips"
}
    }
    ...
}

2.在gradle.properties中配置android.useDeprecatedNdk=true

分享到:
评论

相关推荐

    zbar.so 32位 64位

    本文将深入探讨zbar.so在32位和64位系统中的应用,以及它在不同架构下的适配性。 首先,了解zbar.so的基本功能。这是一个动态链接库,包含C++实现的条形码识别引擎。开发者可以将其集成到Android应用中,实现扫描和...

    liblept.so和libtesseract.so文件(32位和64位)

    在这个场景中,问题的核心在于32位和64位系统之间的差异。"liblept.so"和"libtesseract.so"是两个关键的动态链接库文件,它们在Linux环境下用于图像处理和OCR(光学字符识别)技术。 首先,我们要理解什么是动态...

    zbar libiconv.so libzbarjni.so 32 64位的配置包

    本文将详细讲解如何配置`zbar`库,包括`libiconv.so`和`libzbarjni.so`,以确保在32位和64位设备上都能正常运行。 首先,`zbar`是一个开源的二维码和条形码识别库,它提供了多种语言的API,包括Java。`libzbarjni....

    libsigar-amd64-linux.so和libsigar-x86-linux.so

    libsigar-x86-linux.so则是为了兼容传统的32位x86架构而编译的。虽然现在许多新的服务器和工作站已经转向64位平台,但32位系统依然在某些场合中发挥着作用,比如嵌入式设备或旧版软件的运行环境。libsigar-x86-linux...

    64位libjpeg.so.62

    《64位libjpeg.so.62:一个历史与应用的探索》 在现代的Linux系统中,软件库不断更新迭代,以提供更好的性能和功能。然而,有时我们需要回溯到旧版本,以应对特定的需求或兼容性问题。"64位libjpeg.so.62"就是这样...

    hadoop libhadoop.so.1.0.0 32位 64位

    本文将详细探讨这个库文件及其在32位和64位操作系统中的应用。 libhadoop.so.1.0.0是Hadoop的C++接口实现,它实现了Java Native Interface (JNI),使得Java代码能够调用C++编写的高效本地代码。这个库文件是Hadoop...

    libstdc++.so.5-32and64.zip

    总结一下,这个压缩包提供了适用于64位和32位Linux系统的libstdc++.so.5库,这是GCC和g++在Linux上运行C++代码所必需的。用户需要解压缩文件,然后根据系统的架构将对应的库放置在正确的目录下,并确保它们具有正确...

    ibmysqlclient.so.16(32位和64位)

    这个文件分为32位和64位版本,以适应不同架构的系统。本文将深入探讨 `libmysql` 库、动态链接库的作用以及在不同平台上的应用。 首先,`libmysql` 是 MySQL 官方提供的客户端库,它包含了所有与 MySQL 服务器交互...

    解决usrlib64libstdc++.so.6和lib64libc.so.6版本过低问题

    ### 解决usr/lib64/libstdc++.so.6 和 lib64/libc.so.6 版本过低的问题 在进行系统环境搭建时,尤其是安装像 MySQL 这样的大型软件包时,可能会遇到库文件版本不兼容的问题。本文将详细介绍如何解决 CentOS 7.0 下 ...

    libhadoop.so.1.0.0 64位官方完整版 附带32位libhadoop.so.1.0.0文件

    相反,32位版本的libhadoop.so.1.0.0则是为了兼容32位操作系统。由于32位系统的内存限制(最大约4GB),其对应的库文件可能会精简一些,以减少对内存的需求。在提供的32位版本中,仅包含了一个文件,这可能是因为在...

    libcrypto.so.6 &libcrypto.so.0.9.8b

    在Linux系统中,动态链接库的版本号用于兼容性和向后兼容性管理。当系统中的不同程序依赖于不同版本的库时,这种版本命名方式可以避免冲突。`libcrypto.so.6`可能包含了某个时期的OpenSSL更新,比如安全修复、性能...

    ubuntu安装包libX11.so.6

    在64位的Ubuntu系统上,通常会预装`libX11.so.6`的64位版本。然而,如果你试图运行一个依赖32位库的程序(例如,某些跨平台的应用或旧版软件),系统可能会提示找不到`libX11.so.6:i386`,这意味着你需要安装32位...

    libpng12.so.0

    libpng12.so.0,freeview安装,部分ubuntu需要该文件,一般放在/usr/local就可以使用freeview

    libsqlite.so 下载文件

    随着技术的发展,arm64-v8a成为现代Android设备的主流,适用于64位ARM处理器,如ARMv8架构。这些不同的库版本确保了无论用户使用何种类型的Android设备,应用都能无缝地使用SQLite功能。 libsqlite.so的功能包括但...

    libsigar-amd64-linux.so libsigar-x86-linux.so

    "amd64"和"x86"分别对应64位和32位处理器架构,"linux"则表明这些库是为Linux操作系统编译的。 当Java程序在Linux上运行时遇到“no libsigar-amd64-linux.so in java.library.path”这样的错误,这意味着Java无法...

    libsqlite3.so.0.8.rar_libsqlite3.so.0_libsqlite3.so下载_sqlite3_sq

    在Linux(arm架构)上,`libsqlite3.so.0`和`libsqlite3.so`实际上是符号链接,它们分别指向当前系统中最新的主版本号和次版本号的库文件,例如`libsqlite3.so.0.8.6`。这样做的好处在于,即使应用程序链接的是旧...

    libcrypto.so libssl.so

    arm64-v8a适用于64位的ARMv8架构设备,armeabi和armeabi-v7a分别对应32位的早期和较新的ARM处理器,mips针对MIPS架构的设备,x86和x86_64则是针对Intel和AMD的32位及64位x86处理器。这意味着这个压缩包提供了跨平台...

    libZBarDecoder.so

    同时,为了兼容32位设备,仍需要保留armeabi-v7a等32位架构的库文件。 值得注意的是,虽然64位库提供了更强的计算能力和更高的内存地址空间,但也会增加APK的大小。因此,优化和压缩库文件、合理选择需要支持的架构...

    libstdc++.so_.6.0.20,libstdc++.so_.6.0.25,libstdc++.so_.6.0.26.zip

    在64位操作系统环境下,这三个版本的libstdc++.so库都适用于64位架构,这意味着它们可以支持处理更大范围的数据和更复杂的计算任务。64位系统提供了更大的地址空间,使得程序能够利用更多的内存,这对于处理大数据量...

Global site tag (gtag.js) - Google Analytics