小编xsv*_*eda的帖子

Android L Preview不搜索"armeabi"文件夹中的本机库(UnsatisfiedLinkError)

我有一个带有2个本地库的应用程序.第一个在ARMv7上工作得更快,所以我有ARMv7和ARMv5的版本.第二个在两个平台上的工作方式相同,因此只提供了ARMv5库.

我的本机库文件夹如下所示:

/jniLibs/
    |
    +---armeabi/
    |     |
    |     +---libFirstLibrary.so
    |     +---libSecondLibrary.so
    |
    +---armeabi-v7a/
          |
          +---libFirstLibrary.so
Run Code Online (Sandbox Code Playgroud)

该应用程序适用于生产中的所有设备和Android版本.

当我在Nexus 5上用L-Preview(hammerhead-lpv79-preview-ac1d8a8e.tgz)测试它时,我收到此错误:

java.lang.UnsatisfiedLinkError: Couldn't load SecondLibrary from loader dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.package-1.apk"],nativeLibraryDirectories=[/data/app-lib/com.package-1, /vendor/lib, /system/lib]]]: findLibrary returned null
   at java.lang.Runtime.loadLibrary(Runtime.java:358)
   at java.lang.System.loadLibrary(System.java:610)
Run Code Online (Sandbox Code Playgroud)

问题在于,尽管Nexus 5已CPU_ABI设置armeabi-v7aCPU_ABI2设置为armeabi,但L-Preview仅使用CPU_ABI值并仅在"armeabi-v7a"文件夹中查找"SecondLibrary"并且因为它不存在而崩溃.

当我将.so文件复制到"armeabi-v7a"文件夹时,一切都很好,但APK大3.5 MB,我真的不喜欢.

这只是Android L-Preview或某些"新功能"的错误吗?

android android-ndk android-5.0-lollipop

10
推荐指数
1
解决办法
2848
查看次数