Android multidex,UnsatisfiedLinkError - 找不到 .so 文件

标签 android android-studio java-native-interface android-gradle-plugin

我正在尝试将一些库(.jar 和 .so)添加到我在 android studio 中的 multidex 项目。

当我只向项目添加几个 jar 时,一切正常。 如果我添加越来越多的 jar (其他库) 我收到此错误:

java.lang.UnsatisfiedLinkError:
  dalvik.system.PathClassLoader[DexPathList[[zip file
  "/data/app/com.test.digital.ocrtest-2/base.apk"],nativeLibraryDirectories=[/data/app/com.test.digital.ocrtest-2/lib/arm,
  /data/app/com.test.digital.ocrtest-2/base.apk!/lib/armeabi-v7a,
  /vendor/lib, /system/lib]]] couldn't find
  "libScanovatePassportAndIDLSDK_CPP.so"

知道如何告诉编译器在同一个 dex 中生成 jar 等吗?

最佳答案

如果一些额外的 JAR 为 armeabi-v7a 带来原生库,而您的 libScanovatePassportAndIDLSDK_CPP.so 仅为 armeabi 构建,则安装程序将提取一组错误的库。解决方法不是添加更多的 .so 副本,而是去除其他 ABI。在 gradle 中,你可以使用 splits .

关于Android multidex,UnsatisfiedLinkError - 找不到 .so 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34003040/

相关文章:

c++ - Gradle cpp 插件不链接共享库

android - Retrofit2 和证书固定

c# - 与c#计算机程序和java android应用程序的数据库连接

java - 如何在 GridView 中显示 URL 中的图像而不下载它们?

Android 颜色选择器不适用于 Android 4

android - 为什么gradle的构建无法完成?

java - 如何在 Gradle 中使用不同的 Assets 文件夹为每种风格创建两个应用程序?

android - 从 Broadcast Receiver 接收 Pending Intent 的 ID

c++ - 用 jni 显示 hello world swing

java - 在 Hadoop 上运行 Java native 库