【发布时间】:2014-12-05 21:42:19
【问题描述】:
我遇到了一个问题,即 dalvik.system.PathClassLoader 在英特尔设备上找不到我的 jni 文件。我认为这与我拥有的 aar 依赖项的结构有关,因为一旦我删除了该依赖项,就会发现 jni 文件没有问题。我的 aar 依赖项有 x86 和 arm 库,而我的项目只有 arm 库。
文件夹结构为:
我的项目
- 源
- jniLibs
- armeabi
- libLibraryA.so
我的 AAR 依赖项目有:
- 源
- jniLibs
- armeabi
- libLibraryB.so
- x86
- libLibraryB.so
使用该结构,在 x86 设备上将找不到 libLibraryA.so。我不确定这是 gradle 打包问题还是 dalvik/运行时问题。我不知道下一步该去哪里。我得到的错误是:
FATAL EXCEPTION: main
Process: com.project, PID: 10850
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/base.apk"],nativeLibraryDirectories=[/lib/x86, /vendor/lib, /system/lib]]] couldn't find "libLibraryA.so"
at java.lang.Runtime.loadLibrary(Runtime.java:366)
at java.lang.System.loadLibrary(System.java:989)`
我知道可以通过在我的项目中创建一个 x86 文件夹并将 libLibraryA.so 复制到其中来“修复”该问题。有谁知道 gradle 是否可以/应该为我处理这个?将 arm 编译的库放入 x86 文件夹以在英特尔设备上使用是否安全,否则会破坏运行时翻译?我在 Nexus Player 上看到了无法读取我们的 arm 编译库的问题。
【问题讨论】:
标签: android gradle dalvik unsatisfiedlinkerror android-x86