얼마전에 Eclipse에서 NDK를 지원한다는 사실을 알게 되었다.
(2014/06/30 - [Linux & Android] - Android NDK에서 C++11 사용하기)
그 방법을 이용하면, source가 NDK로 빌드되어 .apk 패키지에 자동으로 .so 라이브러리가 포함되고, system uid가 필요하다거나 하는 특수한 경우가 아니라면, 아무런 문제 없이 잘 실행이 된다.
그런데, source가 아닌 binary로 존재하는 .so 라이브러리의 경우에는 어떻게 해야 하는지 잘 몰랐다.
처음에는 직감적으로 libs/armeabi (or armeabi-v7a)에 .so 파일을 복사해 두면 될거라고 생각했었는데, 잘 안되어 고민을 했었는데, 결과적으로는 그 방법이 맞았다.
즉, .apk에 포함시키고자 하는 .so 라이브러리를 (project root)/libs/armeabi (or armeabi-v7a) 디렉토리를 생성하고 복사 한 후, 프로젝트를 다시 빌드하면 된다.
그럼, 이전에는 왜 안됐냐?
Android Native Support 옵션을 설정 해 둔게 화근이었다.
이것을 설정하면 .cproject라는 파일이 project root에 생성되고, project clean을 수행하면 libs/ 디렉토리에 있는 모든 .so 파일을 삭제하고 다시 빌드를 시도한다. (물론 자동빌드 옵션이 선택 된 경우)
그렇다보니 .apk를 새로 생성하려고 project clean을 수행하면 .so 파일이 날아가고, 빌드된 후 복사 해 봐야 아무런 영향이 없었던 것이었다.
그냥 bin, gen 폴더만 날리고 다시 빌드를 한다면 Android Native Support 옵션을 설정 해 두었더라도 문제없이 해결이 되지 않았을까 하는 추측을 해 본다. 나중에 확인되면 업데이트를... ; )
'리눅스 & 안드로이드' 카테고리의 다른 글
특정 process를 이름으로 종료(kill)시키는 쉘(shell) 명령어(command) (0) | 2015.10.14 |
---|---|
NDK 빌드할 때 생기는 .d 파일 (0) | 2014.08.06 |
android-ndk-profiler 사용하기 (0) | 2014.07.04 |
Android NDK에서 C++11 사용하기 (0) | 2014.06.30 |
NEXUS5에 ARM DS-5 Streamline 붙이기 (0) | 2014.06.26 |