Android Proguard 설정법 libs 라이브러리 포함

android 2011. 12. 27. 20:31 Posted by jiddong
프로가드가 많이 바뀌었다..
요즘적용을 안하다보니... 최신기준으로 수정 작성함

기본 프로젝트 생성을 하면

proguard-project.txt  = 프로가드 세팅 파일
project.properties = 프로젝트 세팅파일

project.properties 프로젝트 세팅파일에  프로가드 사용 여부 주석을 해제 하자
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
해제방법은 # 을 삭제

안드로이드 signkey 로 바이너리를 만들면  

자동으로  Proguard 설정되어짐 확인방법은

android proguard 폴더 아래 4개의 File 생성되야 적용된것임

  • dump.txt :  어플리케이션에서 사용중인 클래스들의 내부 구조에 대한 대략적인 정보를 
  • mapping.txt :  난독화 과정에서 기존 클래스 혹은 메서드가 어떤 새로운 난독화된 이름으로 매핑되었는지 그 목록. 난독화 된 어플리케이션에 발생하는 로그나, 스택 트레이스 들을 분석하기 위해서 꼭 챙겨 두셔야 합니다.
  • seeds.txt : 난독화 되지 않은 클래스와 멤버들의 목록입니다.
  • usage.txt : 사용되지 않기 때문에, apk 파일에서 제거된 코드들의 목록입니다. 혹시 제거되서는 안되는 메서드나 클래스가 제거되었는지 꼭 확인

  


문제가 생길시 파일 설정방법(라이브러리 추가나 메소드가 변경되어 메소드등이 없다고 나올때)

project.properties  File

#프로가드 사용여부

proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt

#프로젝트  지정 sdk 본인의 프로젝트에 알맞은 sdk 사용

target=android-17 


proguard-project.txt  File


-verbose //로그 봄
-dontoptimize // 압축 하지 않음 그냥 하지말자... 
-dontshrink  //사용하지 않는 메소드를 유지하라

-dontwarn org.apache.**  
-dontwarn (Warnig이 나온 클래스).** 
// 빌드시 can't find superclass or interface // can't find referenced class 등의  Warnig 이 나올경우
//클래스 Warnig 을 무시 한다 

-libraryjars libs/android-support-v4.jar // 라이브러리 추가
-libraryjars libs/json-simple-1.1.1 .jar

-keep public class * { public protected *; } 
//public class 와   protected class 의 경우 를 난독화 하지 않는다. 
//public class 를 난독화 할경우 메소드 호출중 문제가 될수 있음....

-keep class org.apache.http.** //org.apache.http.하위 클래스를 전부 난독화 하지 않음 
-keep interface org.apache.http.** //org.apache.http.  하위 인터페이스를 난독화 하지 않는다

-keep class  org.apache.http.** {

public *;

// org.apache.http.하위 클래스중 public method 만 난독화 하지 않음

난독화후 어플리케이션 실행하여 돌려보면서 난독화 범위를 적용해야함.