온라인에서 특정 질문에 답변 할 수있는 사람을 찾지 못했습니다. 나는 일부 .so 라이브러리를 복사하여 새로운 프로젝트에 붙여 넣으려는 오래된 Android 프로젝트를 가지고있다. 필자는이 새로운 것을 처음 접했고이 라이브러리를 어디에서 찾을 지 알려줄 필요가 있다는 것을 알았지 만 컴파일 된 코드를 가져 오기 위해 CMake 나 NDK를 사용해야할지 모르겠습니다.기존의 jni 라이브러리 (이미 ".so"로 컴파일 됨)를 다른 Android 프로젝트에 추가하십시오.
static {
System.loadLibrary("serial_port");
}
을하지만 어떻게 내가 곳이 복사 및 붙여 넣기 파일을 찾을 수있는 컴파일러를 말할까요 :이처럼 내 프로그램이 라이브러리를 요구
:이처럼 내 디렉토리 모습입니다 ?
Android에서 documentation을 기반으로 파일을 시작했지만 몇 가지 사항에 대해 혼란스러워합니다. 이것은 내가 지금까지 가지고있는 것이다 :
# Sets the minimum version of CMake required to build your native library.
# This ensures that a certain set of CMake features is available to
# your build.
cmake_minimum_required(VERSION 3.4.1)
# Specifies a library name, specifies whether the library is STATIC or
# SHARED, and provides relative paths to the source code. You can
# define multiple libraries by adding multiple add.library() commands,
# and CMake builds them for you. When you build your app, Gradle
# automatically packages shared libraries with your APK.
add_library(# Specifies the name of the library.
serial_port
# Sets the library as a shared library.
SHARED
IMPORTED
serial_port/src/${ANDROID_ABI}/libserial_port.so
# Provides a relative path to your source file(s).
src/main/cpp/libs/armeabi/libserial_port.so)
나는 그것을 올바르게하고 있다고 생각하지 않는다. 제발 나를보고 올바른 방향으로 가리 킵니다. 감사합니다
하위 디렉토리 (x86, armeabi)에서도 작동합니까? 전에 시도했지만 안드로이드 스튜디오 내가 내 라이브러리를로드 할 때 호출했던 열린 메서드를 인식하지 못했습니다. System.loadLibrary ("serial_port")를 호출하면이 라이브러리를 인식하지 못하는 것 같습니다. 추신 : 나는이 도서관을 쓰지 않았다. 제조업체가 보낸 샘플 프로그램에서 가져옵니다. 직렬 포트에 액세스하여 POS 시스템의 내부 프린터에 액세스하려고합니다. 샘플 프로그램에서는 private static native FileDescriptor open (String path, int baudrate, int flags, boolean flowCon)을 호출합니다. –
Android 스튜디오가 인식하지 못합니다. 그러나 해당 파일을 해당 디렉토리에 배치하면 실행됩니다. –
한편, 정적 네이티브 메소드는 원하는 곳에 배치 할 수 없습니다. 나는 당신이 적당한 포장에있는 적당한 종류에서 그 (것)들을 선언하고 있다는 것을 희망한다. 샘플 프로그램에서 샘플을 정확하게 배치하십시오. –