2014-04-04 3 views
0

나는 (이 라이브러리 체크 박스가 표시된) 라이브러리와이 라이브러리가 필요한 다른 안드로이드 프로젝트 인 안드로이드 프로젝트를 가지고있다. 라이브러리에는 세 개의 .jar 패킷과 .so 확장자를 가진 7 개의 파일이 들어있는 armeabi라는 폴더가 있습니다..so 라이브러리를 사용하려면 NDK를 설치해야합니까?

자바 빌드 경로 인 라이브러리 탭에 .jar 라이브러리를 추가했습니다. 하지만이 라이브러리가 필요한 프로젝트에 라이브러리를 추가 할 수 없습니다. NDK를 설치하지 않고이 라이브러리를 추가 할 수있는 방법이 있는지 알고 싶습니다.

NDK를 설치해야하는 경우 .so 라이브러리를 추가하려면 어떻게해야합니까?

당신에게 일반적으로 프로젝트의 libs와/armeabi 디렉토리 (이 변경할 수 있는지 확실히 모르는)에서 온 당신이합니다 (NDK와) 구축

답변

0

.so 파일을 빌드 할 때만 NDK가 필요합니다. 포장. 앱 등 일식에 대한 등 파일을 직접 추출하고 /libs/armeabi/ 안에 넣어 당신의 필요, /libs/x86/, /jniLibs/armeabi/, /jniLibs/x86/로 다음을 얻으려면

하는 .so 파일

는 일반적으로, 안드로이드 및 .jar에서 제거됩니다 Android Studio 용.

라이브러리를 패키지화하고 .so 파일을 사용할 때 자동으로 통합하려면 .jar 대신 .aar로 패키지하고 gradle : http://tools.android.com/tech-docs/new-build-system/aar-format을 사용하십시오. .aar 내부

각 아키텍처에 대한 .so를 파일이 작동 이론적으로 내부 등 jni/armeabi/, jni/x86/,

0

라이브러리 대단히 감사합니다.

.so 파일이 이미 있음을 확인하면 수동으로 libs/armeabi 폴더에 저장하면 안전하다고 생각합니다. 그런 다음 자동으로 apk로 압축됩니다.

+1

가야한다,하지만 난 어떻게 안드로이드 호환에 관해서 궁금합니다.NDK가 설치되지 않은 상태에서 라이브러리가 구축되고 있습니다. – fadden

+0

@fadden : 최소한 현명한 방법으로는 NDK가없는 .so 라이브러리를 만들 수 없습니다. 왜 정확히 이것을 묻는거야? 나는 그것이 * 기존 * .so 파일을 사용하고, * 새 파일을 생성하지 않는 * 질문과 관련이 있다고 생각하지 않습니다. 적어도 그것이 내가 OP를 이해하는 방법이다. –

+0

"나는 안드로이드 프로젝트가 있는데 (라이브러리 체크 박스가 표시된 라이브러리이다)".so 파일을 가진 프로젝트가 OP가 구축 한 프로젝트라고 믿게했다. – fadden

0

* .so 파일을 사용하기 위해 NDK가 필요하지 않으며 직접 만들 수 없습니다.

에 * .so 파일 이 필요한 경우 프로젝트의 /libs/armeabi 디렉토리에 배치하면됩니다. 그들은 안드로이드 빌드 시스템에 의해 생성 된 APK에서 끝날 것입니다.

주의해야 할 것은 '이름이 인 파일과 함께 버그/문서화되지 않은 동작입니다. "lib"로 시작하지 않은 * .so 파일에 대해 한 번 설명 할 수없는 문제가있었습니다. APK에 있었지만 장치의 설치 관리자는이를 무시합니다. 이름을 바꿀 때만 제대로 설치됩니다.

라이브러리에 * .so 파일 이 필요한 경우 기본적으로 아무 것도하지 않습니다. 안드로이드 라이브러리 시스템은 자바가 이미이 분야에서 제공하는 것보다 더 정교하지 않고 심지어 더 나쁘지 않다. 하나의 파일에 모든 것을 포함하는 Android 라이브러리를 만들 수있는 방법이 없습니다. 따라서 * .jar 아카이브의 Java 코드에 * .so 파일의 기본 함수가 필요한 경우 * .jar 및 * .so 파일을 클라이언트에 개별 파일로 제공해야합니다. (물론 클라이언트는 위에서 설명한 동일한 작업을 수행합니다. * .so 파일을 앱 프로젝트의 /libs/armeabi 디렉토리에 두십시오.

관련 문제