ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 기존 Android Studio 프로젝트에 .so 파일 추가 및 사용 과정기!
    LANGUAGE/ANDROID 2019. 1. 29. 19:11

    Android Library 프로젝트에 외부 오픈소스를 사용하게 되면서 해당 오픈소스의 .so 파일을 사용해야 하는 경우가 생겼다.

    라이브러리가 jar파일 형태로 나와야 하기에 Gradle dependencies에 추가하지 않고 직접 오픈소스 파일을 추가하였다.

     

    아래는 Test프로젝트에 .so파일을 추가하는 과정이다.

     

    해당 글은 단순 기록의 의미이며 so파일 적용만을 위한 글이다.

    그래서 실제 ndk, jni 사용법과 내용이 다를수 있다. 추후 ndk 관련 공부를 하게 되면 수정을 할 예정이다.

     

    사용한 오픈소스는 루팅 체크하는 기능이다

    https://github.com/scottyab/rootbeer

     

    1. SDK의 ndk 관련 tool을 설치한다.(CMake, LLDB, NDK)

    (CMake는 이번 내용에서는 안쓰는듯 하지만?)

     

     

    2. 프로젝트에 소스와 jni, jnilib 폴더를 추가해 준다.

     

    3. 오픈소스 코드에서 변경된 package명을 자신의 프로젝트 package명으로 수정

     

    4. 단축키 Ctrl + Shift + a 를 통해 action 검색창에서 Link C++ Project with Gradle 선택

     

    5. ndk-build를 선택하고 아까 복사한 jni 폴더에 있는 Android.mk를 선택한다.

     

    확인을 누르면 build.gradle(app 폴더) 파일에 ndk 빌드 관련 코드가 추가된다.

     

    6. jni 폴더에 있는 .cpp 파일과 .h 파일의 함수명을 변경해준다.

    Java_x_x_..._파일명_함수명 으로 되어있는데

    변경된 해당 파일이 있는 package명으로 변경해준다.

     

     

    7. rebuild를 하게 되면 프로젝트 폴더\app\build\intermediates\ndkBuild\debug\obj\local 에 네이티브 모듈별로 .a와 .so파일이 생성된다.

    (jni폴더의 Application.mk 폴더에 네이티브 모듈 기술되어 있음)

     

    해당 파일들 폴더쨰로 아까 복사한 jniLibs 폴더로 복사한다.

     

    그리고 build.gradle(app 폴더) 파일에 아래 코드를 추가해준다. 그러지 않으면

    'More than one file was found with OS independent path 'lib/x86/libtool-checker.so' 에러가 난다.

     

    8. 실행하면 정상적으로 .so파일 사용가능

    'LANGUAGE > ANDROID' 카테고리의 다른 글

    FCM Android Backgroud (feat. app launch)  (0) 2019.07.26
    [Flutter] 설치 및 Android SDK Custom path 사용시 에러  (0) 2019.04.08
    Notification  (0) 2015.02.02
    invalid project description  (0) 2015.01.30
    Activity stack 확인 방법  (0) 2015.01.05

    댓글

Designed by Tistory.