안드로이드가 제공하는 소스코드 난독화 및 최적화 오픈소스
디컴파일을 어렵게 만드는 보안장치
<aside> 💡 역공학 (Reverse Engneering)
디컴파일 (Decompile) :
주로 사용하는 툴은
가 있다
코드 난독화 → 보안
불필요한 메서드를 제거, multiDex 생성을 피해 앱의 크기를 줄임
<aside> 💡 안드로이드 소스 코드는 컴파일 되면 dex 파일로 변환,
한 dex 파일은 65,536개 까지 메소드 참조가 가능함
→ 메서드가 65,536개가 넘어가면 dex 파일 (가상머신에서 실행)이 여러개 생성됨
⇒ 결과적으로 빌드 속도가 느려지고 앱의 용량이 커지게 된다
*dex 파일
: Binary 파일. 기계어로 되어있는 안드로이드 런타임에서 궁극적으로 실행되는 코드가 있음
</aside>
build.gradle (:app)
buildTypes {
debug {
buildConfigField "String", "BASE_URL", "서버URL"
}
release {
buildConfigField "String", "BASE_URL", "서버URL"
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
minifyEnabled 를 true 로 설정하면 프로가드가 적용된다
'proguard-rules.pro' : 프로가드에 적용할 규칙을 명세한다
'proguard-android-optimize.txt' : 최적화 사용 유무에 따라
프로가드를 적용하면 모든 식별자를 알아볼 수 없도록 (난독화) 하기 때문에
라이브러리까지 난독화 되어 실행이 안될 수 있으므로 예외처리를 해주어야한다