티스토리 뷰

ADT Version 18.0~~~ 으로 업데이트 후에 문제가 발생하기 시작했다. 에뮬레이터 하드웨어 가속을 사용하고 싶어서 선택한 결관데 끝은 엄청난 파장으로 이어졌다. 더욱이 Proguard와 Signing도 맞물려서 사람을 참 힘들게 했다. 


안드로이드 툴 프로젝트 사이트

http://tools.android.com/


검색을 하다보니 프로젝트 사이트까지 알아버렸다.

adt revision 17 library error 검색어로 검색을 시도했다.


1. 라이브러리가 인식되지 않는 문제.

ADT 업데이트 후 library는 libs라는 폴더를 별도로 만들어서 넣어주면 자동으로 android depndency에서 이를 참조한다.



그림에서 보듯이 libs 폴더를 만들고 안에 jar파일과 so파일을 넣어주면 Android Dependencies에서 자동으로 

이를 참조하여 새로 Path를 지정해준다. 이렇게 되면 이제부터는 Build Path를 이용해 externel jar나 Add jar를 해주던 것을 모드 지워줘야 한다.


이렇게 한 이유는 외부 jar파일을 처리하면서 불확실한 경로를 참조 할 수 있다는 점과 Proguard를 이용한 난독화를 만들때 jar 파일도 함께 처리 하기 위함이라는 공식 싸이트와 어디서 참조했는지 모를 그런 내용을 잠시 작성해본다. 


이렇게 하면 앞으로 모든 external jar는 다 안에 넣어줘야 한다. 근데 구글 공식 입장에서는 이렇게 하면 더 용량이 줄어 든다고 하니 모를 일이다. (뭐 그런게 있는 것 같기는 한다.. 3.6M짜리가 3.4정도로 줄었다.)


2. Proguard

ADT 업데이트를 하면서 GB 이후 Proguard.cfg를 이용하여 난독화를 통해 디컴파일을 해도 소스를 사수 할수 있게끔 만들어줬는데 그동안 이것과 관련된 버그와 자신들이 직접 Proguard를 고쳐서 사용함에 있어 이거 이렇게 하면 안되겠다 싶어서 안드로이드 default로 Proguard.cfg를 넣어버렸단다.


SDK에 있는 tool 폴더 안에 Proguard.cfg가 어느 순간 부터 사라져버렸다.

이는 이제 Project.property에서 명시적으로 Proguard.cfg를 참조하게 하여 개인적으로 만드는 파일은 설정을 해줄 수 있게 변경 되었다.


  • A "default" set of rules for Android
  • Project-specific flags

공식적으로는 위에 말한 것 처럼 명시 되어있으며, 사용 방법도 역시 아래와 같이 안내해주고 있다.


To enable ProGuard to shrink and obfuscate your code, uncomment this
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt


쉽게 말하면 그냥 경로 지정하라고 하면 된다. proguard-android.txt 는 알아서 수정을 해주면 된다.


또한 Dalvik vm 어쩌구 저쩌구 에러가 나오는데 이럴땐 라이브러리가 2개 있을 때 그중 하나는 사용을 안하는데도 Path에 걸려 있어 중복 Include 오류를 발생하기도 한다. 어찌 되었든 라이브러리 경로 참조 문제니 잘 수정하면 해결이 된다~!


좋은 해결이 되었으면 좋겠다.

댓글
댓글쓰기 폼