내 문제를 소개하기 위해 "armeabi-v7a"및 "x86"ABI에만 컴파일 된 NDK를 사용하는 응용 프로그램이 있습니다. 그래서 컴파일은 나를 제공합니다 :왜 "x86"라이브러리가 "armeabi-v7a"라이브러리 대신 "armeabi-v7a"에뮬레이터에 설치되어 있습니까?
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
내 경고는이 문제가 아닐 수 있습니다. 내가 CPU/ABI는 = (ARM) armeabi-V7A와 함께 에뮬레이터를 생성, (이 두 대상 ABI는에서 동일한는 FFmpeg 라이브러리 버전이 아닙니다하지만 난 그게 문제라고 생각하지 않습니다) 그리고
내 응용 프로그램을 시작할 때 lib가로드되지 않습니다 ("x86"기반 장치 인 경우 "x86"lib가로드되어 작동 함). 셸을 사용하여 (에뮬레이터) 탐색 할 때 다음과 같이 볼 수 있습니다.
lrwxrwxrwx install 2016-07-20 10:06 lib -> /data/app/com.**********/lib/x86
"x86"lib 만 설치되었습니다. 설명이 필요합니까?
이 (I은 삼성 갤럭시 S3에서 테스트 같은 문제가 ...에서, CPU는 ARM 코어 텍스 A9해야하며,이 CPU는하는 ARMv7-A 아키텍처를 구현한다.하지만 내 라이브러리 중 하나를 찾을 수 없음) 내가 ANDROID.MK오류를 해결 일부 MANIP 후에 & & & & & & & & && & & & & & & & & & & &
내가 System.loadLibrary를()를 호출 할 때 발생하는 예외로 관심이 있다면& & & & & &이 다음입니다 :
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"libs !!
[email protected]:/data/app-lib/com.********** # ls
gdbserver
libNativeFFMPEG.so
libavcodec-56.so
libavutil-54.so
libswscale-3.so
하지만 여전히 예외입니다! swscale을로드하려고하면 과 같이 System.loadLibrary ("swscale-3"); 나는 다음과 같은 예외있어 :
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와) 같은 예외가
최종 apk 파일에는 무엇이 있습니까? ** x86 ** 및 ** armeabi-v7a ** 디렉토리에 필요한 라이브러리가 있습니까? 그렇지 않다면 - 자바 모듈에서 ABI 필터를 살펴보십시오. – user1056837
예 생성 된 .apk 파일에 @ user1056837 안에있는 라이브러리가 있습니다. – N0un
응용 프로그램 시작시 java 함수'System.loadLibrary()'를 사용하고 해당 예외를 catch하도록 제안 할 수 있습니다. 예외 메시지에는 시스템이 라이브러리를 찾으려고하는 정보가 있습니다. 유용 할 수 있습니다. – user1056837