다른 Android 프로젝트 의 기존 네이티브 라이브러리를 사용하고 싶기 때문에 NDK 빌드 라이브러리 ( libcalculate.so )를 새 Android 프로젝트에 복사했습니다 . 새 Android 프로젝트에서 폴더 libs/armeabi/
를 만들고 거기 에 libcalculate.so를 넣었 습니다. jni / 폴더 가 없습니다 . 내 테스트 장치에는 ARM 아키텍처가 있습니다.
내 자바 코드에서 다음과 같이 라이브러리를로드합니다.
static{
System.loadLibrary("calculate");
}
새 Android 프로젝트를 실행할 때 오류가 발생했습니다.
java.lang.UnsatisfiedLinkError: ...
nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libcalculate.so"
따라서 오류가 말했듯이 복사 된 네이티브 라이브러리가 / verdor / lib 또는 / system / lib에 없습니다.이 문제를 해결하는 방법은 무엇입니까?
(lib / 아래에 libcalculate.so가 있습니다.)
==== 업데이트 =====
또한 프로젝트 루트 아래에 jni / 폴더를 만들고 jni / 아래에 Android.mk 파일을 추가하려고했습니다. Android.mk의 내용은 다음과 같습니다.
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libcalculate
LOCAL_SRC_FILES := libcalculate.so
include $(PREBUILT_SHARED_LIBRARY)
그런 다음 프로젝트 루트에서 ndk-build를 실행했습니다. 그 후, armeabi / 및 armeabi-v7a / 디렉토리는 ndk-build (폴더 안에 libcalculate.so 포함)에 의해 생성됩니다.
그런 다음 내 maven을 실행하여 프로젝트를 성공적으로 빌드합니다. 최종 apk 패키지에는 다음이 있습니다.
lib/armeabi/libcalculate.so
lib/armeabi-v7a/libcalculate.so
하지만 내 앱을 실행할 때 동일한 오류가 발생합니다.
java.lang.UnsatisfiedLinkError: ...
nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libcalculate.so"
libs/
습니까? 지원하려는 대상 ABI 당 하나의 하위 디렉터리 (armeabi, armeabi-v7a, x86, mips 등)를 만들고 각 하위 디렉터리에 적절한 .so 파일을 배치해야 할 수 있습니다 (예 : armeabi 용으로 빌드 된 .so 파일은libs/armeabi/
, 기타).