엄한 녀석을 빼버리는 Proguard...

|

내가 담당하고 있는 소스 중에, 안드로이드 프레임워크 안쪽으로 들어가는 녀석이 있다.


우리가 만든건 아니고, 다른 회사가 만든걸 포팅만 한건데... 암튼..


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 )

이걸 왜 미리 찾지 못했을까.....


And