마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

jni 프로젝트에서 다른 외부 so 파일 로딩이 되나요?

0 추천
안드로이드스튜디오에서

 

so는 만들어 봣는데요

 

jni 프로젝트 만들고

 

다른 외부 so(혹은 .a) 파일의 패키지명이 틀린데

 

이걸 다시 jni C(혹은 C++)코드에서 불러다가 쓸수 있나요?

 

해보신분들 죄송하지만 예시를 좀 들어서 설명 가능 할까요?

 

부탁 드립니다. 꾸벅
날아라동아리 (620 포인트) 님이 2016년 6월 17일 질문

1개의 답변

0 추천
read권한이 있으면 가능합니다.

dlopen으로 해당 경로의 so를 open 해서, symbol 뽑아 사용하면 됩니다.

MX Player나 Dice Player 어플에서 이런 방식으로 외부 라이브러리를 링크해서 라이센스를 우회하는

편법을 사용할 수 있게 제공합니다.

 

단 N버젼 부터는  순수 NDK로만 빌드 했으면 상관없지만 PDK라이브러리를 이런 방식으로 사용시 warring 창이 뜹니다.
익명사용자 님이 2016년 6월 17일 답변
2016년 6월 17일 수정
네 답변 감사 한데요
뽑아서 쓴다는게 무슨 말씀 이시죠?
JNI프로젝트의 경우 jni 폴더를 만들고요 그 안에다가 cpp 파일과 선언하는 header 파일을 만듭니다.
그리고 Android.mk 파일을 만들어서요 해당  so(동적링크 라이브럴)의 경로 설정을 해줍니다.

header 파일에는 java 에서 쓸 C 함수의  JNICALL 형태로 함수 선언을 하고요 cpp 파일에는 이 함수의 구현 부를 코딩해 줍니다.


근데!!!!!!!!!!!


이 JNI 프로젝트에 외부(패키지명과 heaer,cpp 파일이 완전 틀린) so(동적링크라이브러리)
의 cpp 는 없고요 so랑 header만 있거든요

이 외부 라이브러리를제가 만든 JNI에서 함수만 가져다 쓸수 있냐는 거죠->이게 이해가 잘 안가시면 다시 설명해 드릴께요 외부의 JNI C 함수를 Wrapping 이 되냐는 거죠?


혹시 이 설명을 듣고 싶으셔서 그냥 오픈해서 뽑아 쓰면 된다고 말씀 하신건가요?

예시를 들어 달라고 글에 썼는데요
...