지금 며칠 동안 고민하고 있습니다.안드로이드 스튜디오 C 파일 내에서 공유 라이브러리 (.so) 메소드를 호출하십시오.
대상 가져 오기 : 지금이 순간 난 그냥 (쉽게 완벽한 일)을 NDK의 helloJNI 샘플 코드를 포함하는 간단한 C++ 프로젝트 (1 개 .H & 1 .cpp 파일) 및 최소한의 응용 프로그램으로 테스트하고 있습니다 안드로이드 스튜디오에 기존의 C/C++ 파일 (프로젝트)
접근 다른 가능성의 (수십)의 일부를 밖으로 시도 후, 나는/다음 단계는 내 삶의 목적에 가장 적합한 솔루션이 될 것이라고 생각 생각 :
- Visual Studio 2015 "Android 용 공유 라이브러리 생성"(또는 뭔가)에서 공유 라이브러리 (Calculator.so) 만들기 [성공]
- src/main /에 하위 폴더가있는 jniLibs 폴더를 만듭니다 (x86은 my case)
- src/main/jniLibs에 Android.mk 파일을 추가하십시오. (?)
- Include 문 : "lib"및 ".so"가없는 System.loadLibrary ("Calculator")에서 MainActivity
라이브러리는 Android.mk와 마찬가지로 jniLibs 폴더에 Android Studio에 나열됩니다. 더욱이 apk를 빌드하면 라이브러리가 성공적으로 압축되고 unzipping으로 오류가 발생하지 않습니다. BUT : 어떻게 라이브러리의 메소드를 호출 할 수 있습니까? 다른 스레드에서 제공되는 다른 솔루션을 시도했지만 위의 설명 된 내 .mk 또는 내 단계에서 뭔가 놓친 것 같아요.
의 같은 네이티브 lib.cpp에서
- 다른
#include <myLib>
문을 시도 - 다른 Android.mk 설정 (그러나조차하지 자습서 나에게 많은 도움이 그래서 파일을 만들기 위해 새로운 해요 내 특정 문제 : 하위 폴더 86
- 및 많은 다른 사람과 같은 libCalculator.so에 대한 :))
- 다른 위치 - 단순히 기압 (wasntme)를 생각 나게하지
귀하의 도움에 감사드립니다!
Android.mk는
LOCAL_PATH := $(call my-dir)
APP_ABI := x86
# library info
include $(CLEAR_VARS)
LOCAL_MODULE := Calculator
LOCAL_SRC_FILES := $(TARGET_ARCH_ABI)/Calculator.so
LOCAL_EXPORT_C_INCLUDES := ..../Visual Studio 2015/Projects/SO_Library/SO_Library
include $(BUILD_SHARED_LIBRARY)
Android Studio에서 컴파일 할 라이브러리가 있습니다. .mk 파일에 대한 큰 도움을 주셔서 대단히 감사합니다. 검색에서 많이 오해 한 것입니다. 이제 질문이 하나 더 생겼습니다. 그 결과를 얻지 못했기 때문에 어떻게 실행시킬 수 있습니까? (.jni 구문으로 묶이지 않은) 메소드는 샘플 native-lib.cpp를 말할 수 있습니까? –
당신을 환영합니다!). .SO는 메소드가 아니며 공유 라이브러리입니다. C++ 소스 및 일부 정적 라이브러리에서 빌드됩니다. .SO 라이브러리에있는 메소드를 사용하려면 "native"키워드로 호출 할 수 있습니다. 나는 이미 그것을 설명했다. – JavadKhan