서적에 관한 질문 및 오류 등을 문의 할 수 있으며, 저자로부터 직접 답변을 받을 수 있습니다.

안녕하세요~


고민해보고 찾아봐도 명확한 해답을 얻지 못하여 질문드립니다  ㅠㅠ. 답답하네요 흑...


궁금한것이.. 3rd party app에서 


안드로이드 프레임워크의 특정 기능 이나 라이브러리를 커스터마이징해서 타겟 디바이스에 설치해 적용해보는 겁니다.


이렇게 하려는 이유는 프레임워크의 기능중 확장하거나 커스터마이징해보고 싶은 부분이 있기 때문이죠...


PDK를 이용해서 에뮬레이터로 돌려보면 테스트는 가능하겠지만...


실제 APK 파일로 만들어서 루팅없이!! 다양한 타겟 디바이스에 설치해서 사용해보려고 하니 문제 있어서요.


실제 타겟디바이스에 올려봐야 타겟 디바이스의 해당 시스템 라이브러리를 수정하지 않는 이상 반영이 되질 않질 않으니...ㅜㅜ 어떠한 방법으로 가능할까요?


한가지 시도는 해보고 있는게...


해당 라이브러리 까지의 호출 루틴(JAVA-> JNI -> 네이티브 라이브러리)을 다른 이름으로 재작성해서... 앱에서 호출하게 되면 타겟 디바이스의 라이브러리를 수정해서 호출하는게 아니니 루팅을 하지 않아도 되고... 앱에서 바로 네이티브를 통해서 확장 된 기능을 사용할 수 있지 않을까 생각하는데... 너무 노가다 일까요? 아니면 불가능한 방법인가요;;


혹은 다른 접근법이 있는지... 등에 대해서 조언좀 부탁드리겠습니다.


아는만큼 보인다는게 요즘따라 절실히 느껴지네요 ㅠㅠ....






고도리

2013.03.17 20:13:51
*.111.12.170

주로 class의 permission 때문에 쉽게 손대지 못하는 경우가 있습니다.


하나의 아이디어는 사용하고자 하는 모듈의 소스를 pdk에서 떼 와서 수정한 후 새로운 모듈을 만드는 것입니다.

접근 권한만 살짝 바꿔서요...^^


예전 제 밑의 직원이 그렇게 처리하더군요.


다만 위험성은 있다는 것을 아시기 바랍니다.


김바람

2013.03.22 08:58:22
*.118.69.52

고도리님~


현재 PDK를 떼와서 약간의 수정을 한 뒤 새로운 모듈로 만들어 앱에서 호출해 봤습니다...


작업하고 있는 부분은 MediaPlayer.java 재작성 한 뒤 


JNI 인 android_media_MediaPlayer.cpp 를 재작성 해서 so 모듈로 만들었는데.. 문제가..


android_media_MediaPlayer.cpp 소스에 android_view_Surface_getSurface(env, jsurface) 함수 부분이


라이브러리 로드 시에 아래와 같은 에러를 뿜어내네요

Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1307]:  1990 cannot locate '_ZN7android31android_view_Surface_getSurfaceEP7_JNIEnvP8_jobject'...


라이브러리에서 로드를 못 하는 현상이 있네요...

android_view_Surface_getSurface 함수는 libandroid_runtime.so에서 참조 되는걸 확인했고,,,

mk파일에도 참조 선언을 해놓았습니다..


갤노트2로 쭉 테스트 하다가 안돼서..


레퍼런스인 넥서스7로 테스트 하니까 위의 에러가 발생하지 않네요..


노트10.1에서도 같은 에러가 뜨는 걸 보니... 삼성폰에서만 내부적으로 뭔가가 다른듯한데 ㅠㅠ...


추측해보면 libandroid_runtime 라이브러리를 삼성측에서 수정했거나... 구조가 다른거 같기도 하네요


위의 오류에 대해서 조언 좀 부탁드리겠습니다~!


그리고 말씀하신 접근권한에 대해서 정확히 어떤 부분인지에 대해서 추가 설명좀 해주시면 감사하겠습니다 ㅎ


고도리

2013.03.22 18:13:18
*.200.239.210

android_view_Surface_getSurface() 함수가 포함되어 있는 library를 컴파일 하실 때 지정해 주셔야 합니다.

이는 버전별로 다를 수도 있습니다.


접근권한의 경우는......


예를 들어 system user만 다룰 수 있는 부분이 있는데, 이를 fork 해서 새롭게 만드실 경우도 비슷한 문제가 발생할 것이라는 얘기입니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수sort

repo 설정 시에 문제가 발생합니다. [5]

  • 죽유
  • 2012-12-19
  • 조회 수 5253

NDK 개발 환경 설정하기에서 문제입니다. file [2]

surfaceflinger에서 화면을 dump뜨는 메카니즘에 대해서...

GPIO 컨트롤 하기 예제 중 insmod에 관하여 문의드립니다. [2]

정오표 정리 제안 [4]

안드로이드 소스 컴파일 시에 문제가 발생합니다. [10]

  • 죽유
  • 2012-12-20
  • 조회 수 5014

SDL 예제관련 에러 질문입니다. [1]

  • 민민
  • 2012-12-25
  • 조회 수 5011

ffmpeg & hoffplay 에러 [5]

동영상 파일을 열때 avformat_open_input문 사용문의 [2]

hoffplay 빌드시 sec_format.h / SEC_OMX_Def.h 없다고 나옵니다. [3]

3rd party app에서 프레임워크 수정된 걸 적용시키려면 어떻게 해야... [3]

ffmpeg HOPLAY [3]

ffmpeg 빌드에러 [2]

GetMethodID와 GetStaticMethodID [2]

NDK에서 Surface 질문드립니다. [3]

개발 환경 구축하는데 몇가지 질문 사항이 있습니다. [3]

  • 죽유
  • 2012-12-15
  • 조회 수 4607

SSL_ERROR_SYSCALL 에러 질문드립니다..

NDK 소스 빌드 질문 드립니다. [2]

79쪽 예제 말이에요 ㅠㅠ [1]

Error 질문 드립니다. [9]

사용자 로그인