首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么"x86“库安装在"armeabi-v7a”模拟器上而不是"armeabi-v7a“库?

为什么"x86“库安装在"armeabi-v7a”模拟器上而不是"armeabi-v7a“库?
EN

Stack Overflow用户
提问于 2016-07-20 09:47:25
回答 1查看 1.5K关注 0票数 0

为了介绍我的问题,我有一个只为"armeabi-v7a“和"x86”ABI编译的应用程序。因此,汇编给了我:

代码语言:javascript
复制
Android NDK: WARNING: APP_PLATFORM android-17 is larger than android:minSdkVersion 10 in /home/**********/AndroidManifest.xml
[armeabi-v7a] Gdbserver      : [arm-linux-androideabi-4.9] libs/armeabi-v7a/gdbserver
[armeabi-v7a] Gdbsetup       : libs/armeabi-v7a/gdb.setup
[x86] Gdbserver      : [x86-4.9] libs/x86/gdbserver
[x86] Gdbsetup       : libs/x86/gdb.setup
[armeabi-v7a] Install        : libNativeFFMPEG.so => libs/armeabi-v7a/libNativeFFMPEG.so
[armeabi-v7a] Install        : libavcodec-56.so => libs/armeabi-v7a/libavcodec-56.so
[armeabi-v7a] Install        : libavutil-54.so => libs/armeabi-v7a/libavutil-54.so
[armeabi-v7a] Install        : libswscale-3.so => libs/armeabi-v7a/libswscale-3.so
[x86] Install        : libNativeFFMPEG.so => libs/x86/libNativeFFMPEG.so
[x86] Install        : libavcodec-57.so => libs/x86/libavcodec-57.so
[x86] Install        : libavutil-55.so => libs/x86/libavutil-55.so
[x86] Install        : libswscale-4.so => libs/x86/libswscale-4.so

我的问题可能是从这个警告中看出的?(这不是两个目标ABI上相同的ffmpeg库版本,但我不认为这是问题所在)

然后,我用CPU/ABI = (ARM) armeabi-v7a创建一个模拟器,应用程序启动时没有加载我的lib (而是使用基于"x86“的设备"x86”库加载并工作)。当我使用shell探索它(模拟器)时,我可以看到:

代码语言:javascript
复制
lrwxrwxrwx install 2016-07-20 10:06 lib -> /data/app/com.**********/lib/x86

只安装了"x86“库..。请解释一下?

(我在三星Galaxy上也有同样的测试问题,S3应该是ARM Cortex-A9,这个CPU实现了ARMv7-A架构。但我的图书馆也找不到)

& IN;&∈∈∈&

如果您对我调用System.loadLibrary(),时生成的异常感兴趣,请执行以下操作:

代码语言:javascript
复制
07-20 12:31:23.360: D/dalvikvm(3671): Trying to load lib /data/app-lib/com.**********/libNativeFFMPEG.so 0x40cdc118
07-20 12:31:23.370: W/System.err(3671): java.lang.UnsatisfiedLinkError: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libswscale-3.so" needed by "libNativeFFMPEG.so"; caused by load_library(linker.cpp:745): library "libswscale-3.so" not found
07-20 12:31:23.370: W/System.err(3671):     at java.lang.Runtime.loadLibrary(Runtime.java:371)
...

但是当我查看/data/app-lib/com.*时,我发现了我的"armeabi-v7a“库!

代码语言:javascript
复制
root@android:/data/app-lib/com.********** # ls
gdbserver
libNativeFFMPEG.so
libavcodec-56.so
libavutil-54.so
libswscale-3.so

但它仍然是例外!当我尝试像System.loadLibrary("swscale-3");一样加载swscale时,我得到了以下异常:

代码语言:javascript
复制
07-20 12:56:36.351: E/dalvikvm(4174): dlopen("/data/app-lib/com.**********/libswscale-3.so") failed: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libavutil-54.so" needed by "libswscale-3.so"; caused by load_library(linker.cpp:745): library "libavutil-54.so" not found
07-20 12:56:36.361: W/System.err(4174): java.lang.UnsatisfiedLinkError: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libavutil-54.so" needed by "libswscale-3.so"; caused by load_library(linker.cpp:745): library "libavutil-54.so" not found
07-20 12:56:36.361: W/System.err(4174): java.lang.UnsatisfiedLinkError: Cannot load library: soinfo_link_image(linker.cpp:1635): could not load library "libavutil-54.so" needed by "libswscale-3.so"; caused by load_library(linker.cpp:745): library "libavutil-54.so" not found

当我尝试同样地加载avutil-54时,除了"NativeFFMPEG“(但是使用libavutil-54.so)之外,还有一个例外。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-20 13:44:22

最后,在@user1056837的帮助下解决了我的问题。

奇怪的是我要找的是:

对于ABI "x86“(至少?),当您想使用依赖于其他库的libmylib.so时,只需加载libmylib.so:

代码语言:javascript
复制
System.loadLibrary("mylib");

但是对于ABI "armeabi-v7a“(至少?),您必须手动加载库、库的依赖项和库的依赖项。

代码语言:javascript
复制
System.loadLibrary("dep1");
System.loadLibrary("dep2");
System.loadLibrary("mylib");

我现在还没有明确的解释,但我会找到的。我希望它能帮到别人。

编辑:问题不在于目标拱,而在于我的本机代码/库编译。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38477812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档