Proguard 를 통한 Android 배포 전 코드 난독화

  • Proguard로 apk,arr,Jar 등 Java기반의 export되는 파일내 클래스파일을 난독화/축소/최적화를 할 수 있다, 최적화에 따라 multidex앱이 되는 것을 피할 수 있다.
  • https://www.guardsquare.com/ko/%EC%A0%9C%ED%92%88/proguard](https://www.guardsquare.com/ko/제품/proguard
  • Proguard GuI툴을 이용할 수도 있고, Android Studio에서 app레벨(sdk설정이나 외부라이브러리 implementation하는) build.gradle설정을 통해서 빌드시 자동으로 난독화 할 수 있게할 수도 있다.
  • 웬만하면 안드로이드 스튜디오에서 만든 라이브러리 Jar파일은 AndroidStudio내에서 옵션을 통해 난독화하는게 낫다.
    • 왜냐하면 코틀린 등을 빌드하는데 필요한 어노테이션 등은 AndroidStudio제작사인 IntelliJ에 종속적인 경우가있는데, 이런 라이브러리들을 구하기가 힘들기 때문이다.
    • 그리고, Progurad GUI는 gradle이나 Maven을 이용해 외부라이브러리를 포함할 수 없어 해당 Jar파일을 만들때 이용한 외부라이브러리 등을 일일히 다 포함시켜줘야 한다. 사실상 모든 라이브러리들을 직접 포함하는 경우가 아니라면 GUI보단 IDE에서 제공하는 빌드옵션을 이용하자.
  • build.gradle에서 debug 혹은 release에 minifyEnabled 속성을 true로 설정한 후 빌드하면 난독화가 진행된다.
  • 예시) build.gradle
    buildTypes {

        debug {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }


        release {
            minifyEnabled false
            proguardFiles 'proguard-rules.pro'
        }
    }
  • 프로젝트 생성시 gradle의 기본 설정이 proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'인데, 여기서 getDefaultProguardFile로 얻어오는 파일의 경로는 Android sdk 설정경로내 tools>proguard에 있다.
    • Android Studio 설치시 기본 SDK 설치경로 기준 : C:\Users{User}\AppData\Local\Android\Sdk\tools\proguard
  • proguard-rules.pro는 app디렉터리 바로 아래에 있으며, 사용자 정의 난독화 룰을 지정한다. proguard-rules는 프리픽스가 아니며, .pro파일을 추가한다는 것이 중요하다.
  • proguard 의 룰은 상당히 많고, 다양하다. 그래서 보기도, 설정하기도 어려우므로 처음엔 proguard tools 경로에 있는 example 설정을 참고하는 것이 좋다.
  • 난독화시 설정에 따라 참조하는 라이브러리도 export하는 jar에 전부 포함될 수 있다. 이 경우, 만들어진 jar를 참조하는 프로젝트에서 따로 jar내부적인 의존성을 신경쓸 필요없어서 편할 수 있지만, 크기가 매우 커질 수 있다는 단점이 있다.

'Android' 카테고리의 다른 글

Build Variant( 빌드 변형 ) 설정  (0) 2022.05.17
NDK( Native Development Kit ) 설치  (0) 2022.05.14
JAR 파일  (0) 2022.05.12
AAR 파일  (0) 2022.05.12
build.gradle 의 buildType 속성  (0) 2022.05.12

+ Recent posts