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

안녕하세요~


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


궁금한것이.. 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 조회 수
83 NDK 소스 빌드 질문 드립니다. [2] 더페이퍼 2012-09-28 4545
82 NDK관련 코드 문의 [2] k2h 2012-10-05 4325
81 책내용 문의 드립니다. [2] k2h 2012-10-12 4378
80 NDK 문의 드립니다. [4] 더페이퍼 2012-10-16 4395
79 NDK page-359 문의 [1] k2h 2012-10-16 4291
78 GetMethodID와 GetStaticMethodID [2] 심심해 2012-10-17 4687
77 Error 질문 드립니다. [9] 더페이퍼 2012-10-18 4531
76 [예제01.HelloWorld] JNI를 통한 Native 함수 단순 호출 file 전호철 2012-10-22 4417
75 [예제02.Prompt] JAVA와 Native 간 String 전달 예제 file 전호철 2012-10-22 4236
74 [예제03.IntArrary] JAVA와 Native 간 Int형 Array 전달 예제 file 전호철 2012-10-22 4323
73 [예제04.ObjectArrayTest] Native에서 2차원 Int 배열 생성 예제 file 전호철 2012-10-22 4365
72 [예제05/06.InstanceFieldAccess] Native에서 JAVA의 Field에 접... file 전호철 2012-10-22 4308
71 도대체 책의 예제 소스는 언제... 된장 2012-10-24 4426
70 [예제07/08.MethodCall] Native에서 JAVA의 Method를 호출하는 예... file 전호철 2012-10-26 4160
69 [예제09.MyNewString] Native에서 String 생성자 호출 예제 file 전호철 2012-10-26 4272
68 [예제10.CatchThrow] Native에서 Exeption 처리 예제 file 전호철 2012-10-26 4321
67 [예제11.Window_Fraction] file 전호철 2012-10-26 4257
66 [예제12.SDL] Android 에서 SDL 사용하는 예제 file 전호철 2012-10-26 4389
65 SSL_ERROR_SYSCALL 에러 질문드립니다.. 더페이퍼 2012-10-30 4564
64 NDK 에서 BYTE 나 BOOL 등은 사용 못하는지요? [1] 더페이퍼 2012-10-30 4158

사용자 로그인