내가 담당하고 있는 소스 중에, 안드로이드 프레임워크 안쪽으로 들어가는 녀석이 있다.
우리가 만든건 아니고, 다른 회사가 만든걸 포팅만 한건데... 암튼..
aidl이 있고, 이 aidl을 이용하는 서비스가 하나. 근데 이 aidl을 서비스만 이용하는게 아니라 프레임워크 내에서도 이용...
때문에 서비스쪽으로 aidl을 가져올수는 없고...
이런 상황에서, eng로 빌드하면 별 이상이 없는데, user로 빌드하면 aidl안 메소드를 못찾는 거다... NotFoundSuchMethodException 이던가...
요거때문에 한 3주를 낑낑대다가 원인 발견... 문제는 proguard....
빌드 과정에서 aidl은 jar파일로 먼저 묶이고, 이 jar을 서비스 어플에서 가져다 쓰는 방식인데,
proguard가 요 링크를 없애버리는거다...
결정적인 단서는 역시 로그.
빌드 로그중 서비스 컴파일 후 proguard로그가 뜨는데, 이때 링크되는 jar들에 대해 모든 클래스를 shrink 시켜버리는거다... unused라면서...
이걸 단서로 매뉴얼 문서중 http://proguard.sourceforge.net/manual/usage.html#shrinkingoptions 발견...
--dontshrink 옵션 추가로 해결.
덧.
dontshrink로 검색하다 발견한 포스팅 ( http://shadowxx.egloos.com/10763147 )
이걸 왜 미리 찾지 못했을까.....
'Knowledge > Java' 카테고리의 다른 글
Reflection 알고 쓰기 (0) | 2013.11.24 |
---|---|
Java SE 7 : 새로운 코딩 기법 소개 (0) | 2011.07.30 |
[Java] 좌표계간 변환 클래스 (0) | 2011.04.04 |
Javascript의 unescape, Java(JSP)에서 사용하기 (5) | 2008.06.09 |
특정 디렉토리 내 파일목록 가져오기 (2) | 2008.02.12 |