안드로이드 apk파일을 추출하여 디컴파일을 하게되면 거의 모든 소스를 볼수가 있었다.(모 저도 앱 참조할때 디컴파일 사용해서 해보기 했지만;;;)
이것을 방지하기 위한 proguard를 적용하기로 했다. 프로가드를 적용하여 소스를 보호하자.
구글을 android proguard를 검색하게 되면 많이 나오지만 기본적인 프로가드 적용방법이라... 정말로 필요한 부분만 정리하는 것이 좋을같아 정리를 해야겠다고 생각을 했다~
안드로이드 프로젝트를 생성하게 되면 proguard.cfg, project.properties 파일이 있다.
인디고에서는 project.properties 갈릴레오버전에서는 default.properties로 생성될것이다.
빨간색 밑줄 쓴 부분만 project.properties파일에 입력한다음 apk파일을 export하면 일단 성공이다.
proguard.config=proguard.cfg
이과정은 구글 검색에서 많이 나오는 부분이라 .. 두가지의 예외가 생겼었는데 하나는 proguard jar파일을 access못한다는 에러였고 또하나는 waring jar파일의 패키지명이 나온예러였다.(정확히는 생각이...)
첫번째 proguard의 jar파일을 access어쩌구저쩌구 에러가 나오게 된다면
안드로이드의 sdk가 설치된 폴더로 가서 나같은 경우는(C:\Android\sdk\tools\proguard\bin)
tools-> proguard ->bin 폴더에 있는 proguard파일을 메모장이나 edit plus와 같은 편집기를 열어
맨밑에 설정된 부분을
call %java_exe% -jar "%PROGUARD_HOME%"\lib\proguard.jar %1 %2 %3 %4 %5 %6 %7 %8 %9
위와 같은 식으로 설정해 준다. jar %1사이의 띄어쓰기는 매우중요함..
이렇게 해도 안된다고하면 proguardgui, retrace파일까지 열어서 위의 문장이 제대로 입력되어있는지 확인하여야한다.
(저같은 경우는 3가지 파일중 하나가 jar와 %1부분이 띄어쓰기가 안되어 있어 에러가 계속;;;)
(에러가 계속난다면 꼭3개의 파일을 열어 확인을..)
두번째는 Waring jar어쩌구저쩌구가 나는 에러다.
이것은 외부 Jar파일을 사용하지 않을때는 거의 안날것이다. 나같은 경우 viewpager와 navermap을 사용하기 위해 nmaps.jar, android-support-v4.jar 파일을 사용했는데 아무런 수정없이 apk를 export하게 된다면 반드시 에러가 날것이다.(아마도 내 생각에는 이미 프로가드가 적용되서 그런것 같은데 확실히는 몰르겠다)
위 두jar파일에 대해서는 proguard를 적용하지 않는다는 문구가 필요했다.
위의 그림 처럼 저렇게 nmaps.jar, android-support-v4.jar에 대한 패키지명을 지정하면 두 jar파일은 proguard를 적용시키지 않는다.
그럼 성공적으로 apk파일에 proguard가 적용될것이다.
-dontwarn android.support.v4.**
-dontwarn com.nhn.android.maps.**
p.s 만약 다른 jar를 사용하고 있다면 에러문구에 나오는 패키지부분을 -dontwarn 다음에 써주면될것 같다.
ex) warning com.hyo.itte.class, warning com.hyo.zzz.class 가 나왔다면 -dontwarn com.hyo.**이렇게 입력하면 될것이다(공통부분만 찾아서 나머지는 **)
proguad가 적용이 잘되었다면
위와 같이 proguard폴더에 4개의 파일생성되었다면 성공한것이다. 처음 apk를 생성할때는 바로 확인이 안될수도 있다.(너무 걱정안해도 된다. 에러만 안나온다면 )
이클립스를 종료해서 다시 들어오게 된다면 생성되어 있을것이고 아님 프로젝트 폴더가 저장된 부분에 가면 확인할 수 있다. (만약 생성이 안되어 있다면 적용실패;;)
정말로 확인을 위해서는 프로가드를 적용하지 않은 apk파일과 적용한 후의 apk파일을 똑같이 디컴파일하게되면 확실히 알 수가 있다. 디컴파일 부분은 다음시간에 정리할 것이다.
댓글 없음:
댓글 쓰기