마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

프로가드 난독화가 안됩니다 (이클립스 안드로이드)

0 추천

프로가드 난독화 안되는 문제 입니다 저번에 질문을 올렸는데 아무도 답변해 주지 않아서 

간단한 소스를 첨부 합니다 소스내용은 간단한 key event 관련 소스 입니다 

 

제 컴퓨터 bulid 환경입니다 환경은 (이클립스,android 22,java level 1.6 ) 사용했으며 proguard 사용시 생성 파일( dump.txt , mapping.txt ,seeds.txt ,usage.txt) 이 생성 되었습니다 

프로가드는 최신 버전 (proguard5.3.2)으로 복사 했습니다

그런데 apk 를 de-complie 하면 난독화(Obfuscation) 적용이 되어 있지 않습니다

apk 는  export singned Android application 으로 생성하였습니다 제가 아무리 시도해봐도 잘못된 원인을 모르겠습니다 

풀 소스 코드 URL 첨부해 드립니다 https://www.dropbox.com/s/2ir1y8xea28l9uj/KeyEvent.7z?dl=0

소스에 어떤 점을 잘못 적용한 것인지 알려주세요 

tool>proguard>proguard-android.txt 옵션은 기본 설정으로 로 변경하지 않았습니다 

 

간단 요약입니다 
1 project.properties  이클립스 에서 하기 주석을 해제 했습니다 
proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

2 최신버전 프로가드 설치 
proguard 5.3.2

3 프로가드 로그 파일들이 생성되었습니다 
dump.txt , mapping.txt ,seeds.txt ,usage.txt

4 export singned Android application 싸인된 APK 를 생성했습니다 
no error , made singned apk

5 생성된 apk 를 디컴파일 결과 난독화가 적용 안되 어 있습니다 

맵핑파일을 열고 실제 디컴파일 소스와 비교 해 보았는데요 하기와 같았습니다 


mapping.txt
com.superdroid.test.event.key.MainActivity -> com.superdroid.test.event.key.MainActivity:
long mExitModeTime -> a

decomple apk source
MainActivity.class not change (mExitModeTime -> a)
private long mExitModeTime = 0L;

원래대로 라면 mExitModeTime 가 a 로 치환되여야 하는데 아무리 해도 mapping 파일에는 치환 됬다고 로그가 나오는데 서명된 apk 는 변한게 없습니다 

원인을 잘 모르겠네요... 

검은백사 (120 포인트) 님이 2017년 2월 1일 질문

1개의 답변

0 추천

${sdk.dir}/tools/proguard/proguard-android.txt 에 해당하는 파일을 보면 안드로이드에서 기본적으로 proguard 가 되서는 안되는 기본 항목들이 정의되어 있고 그중 Activity 를 상속 받은 애들은 proguard 하면 안되는 항목에 포함되어 있습니다. 

aucd29 (218,390 포인트) 님이 2017년 2월 1일 답변
네 댓글 감사합니다 제가 android.txt 의 keep 관련 항목을 모두 주석처리 하고 난독화 해도 변화가 없어서요 동일한 소스 동일한 환경으로 스튜디오에서는 난독화를 확인했습니다. 이클립스 에서 난독화를 하고 싶은데 변하지 않는 이유를 모르겠어서요
activity 는 androidmanifest.xml 과 연동되어 프로가드 되면 시작 즉시 앱이 죽습니다.
하면 안되는 항목이라는 걸 알려 드린겁니다.
하려고 치면 사용자가 직접 생성한 method 정도는 일부 할 수 있겠네요
네 리소스등 몇개 빼고 난독화가 진행되야되는데 apk 실행 여부는 상관없습니다 난독화가 되는걸 디컴파일 해서 보려고 하는데요.  동일하게 스튜디오 설정에서는 잘되는데 이클립스 버전에서는 난독화가 진행이 안되네요..
...