반응형
현재 라이브러리를 개발중에 있습니다.
공개 범위의 코드를 제외하고 소스노출의 최소화와 aar파일의 용량을 줄이기 위해서 프로가드를 사용하게 되었습니다.
적용하기위해 사용한 코드와 공부내용 포스팅 해보겠습니다.
1. Proguard란?
- 수행시기
- 릴리즈시 - 역할
1. 코드 난독화
2. 패키지 경량화
2. 사용하기
app level gradle 파일의 buildTypes태그에 다음과 같이 입력합니다.
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
minifyEnabled를 true/false로 설정해 프로가드를 사용/미사용으로 설정할 수 있습니다.
proguardFiles getDefualtProjuardFile을 사용해서 기본 프로가드 설정을 선택할 수 있습니다.
이 파일은 새 안드로이드 프로젝트롤 생성하면 app/src폴더 내부에 자동으로 생성되어 있습니다.
해당 부분에 주로 난독화 예외처리와 같은 세부적인 설정을 하게 됩니다.
3. 예외 처리
proguard-rules.pro에 입력해서 예외처리를 하게 됩니다.
제가 사용했던 예외처리는 다음과 같습니다.
3-1. 모든 인터페이스 난독화 미처리
- 인터페이스가 callback을 위한 메서드만 있어서 공개처리했습니다.
-keep interface *{
<methods>;
<fields>;
}
3-2. 패키지의 클래스중 public은 난독화 제외
- 사용자에게 공개할 메서드 외에는 모두 접근제한자를 protected 설정했어서 해당 예외를 사용했습니다.
-keep class com.example.examplePackage.**{
public <fields>;
public <methods>;
}
3-3. 소스파일의 라인은 섞지 않음
- 섞으면 stacktrace에서 라인추적이 불가능합니다.
-keepattributes SourceFile,LineNumberTable
3-4. 소스파일의 변수명 변경
-renamesourcefileattribute SourceFile
이상입니다.
반응형
'IDE & Framework > Android' 카테고리의 다른 글
Android Log 라이브러리 Timber (0) | 2022.02.24 |
---|---|
Android Log 라이브러리 Logger (0) | 2022.02.24 |
[Kotlin] PhoneStateListener deprecated, TelephonyCallback로 대체하기 (0) | 2022.02.13 |
[Kotlin] RecyclerView (3) - ItemTouchHelper로 Swipe event 구현 (0) | 2022.02.08 |
[Kotlin] RecyclerView (2) - Filter와 SerachView로 검색기능 구현 (2) | 2022.02.05 |