반응형
Greensky0026
삽질러의 대환장 공사판
Greensky0026
전체 방문자
오늘
어제
  • 분류 전체보기 (241)
    • Language (56)
      • JAVA (13)
      • Swift (38)
      • Kotlin (4)
      • Dart (0)
      • PHP (0)
      • JavaScript (1)
    • IDE & Framework (92)
      • Spring (10)
      • Android (48)
      • iOS (8)
      • NodeJS (1)
      • CodeIgniter (3)
      • Flutter (1)
      • 분류중 (18)
    • Infra (8)
    • Database (12)
    • VCS (4)
    • Debug Log (34)
      • java (7)
      • swift (3)
      • Android (9)
      • Web (7)
      • 삽질기 (7)
    • Others (19)
      • 코딩테스트 풀이 (0)
      • IT 이야기 (18)
    • 쉼터 (2)
    • 개발공부 (14)
      • Network (1)
      • 자료구조와 알고리즘 (2)
      • Code design (8)
      • ETC (1)
      • 아카이브 (1)

블로그 메뉴

    공지사항

    • 프로그래머스 코딩 테스트 관련글 비공개 처리

    인기 글

    태그

    • swfit
    • 타입
    • 프로그래머스
    • Java
    • 예제
    • xcode
    • reduce
    • level1
    • swift
    • ios
    • JSP
    • 프로그래밍
    • IT
    • 개발
    • map
    • Android
    • 구축
    • 코딩테스트
    • 공부
    • kotlin

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    Greensky0026

    삽질러의 대환장 공사판

    Android Proguard
    IDE & Framework/Android

    Android Proguard

    2022. 2. 20. 22:16
    반응형

    현재 라이브러리를 개발중에 있습니다.

    공개 범위의 코드를 제외하고 소스노출의 최소화와 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폴더 내부에 자동으로 생성되어 있습니다.

    해당 부분에 주로 난독화 예외처리와 같은 세부적인 설정을 하게 됩니다.

    proguard-rules.pro

     

    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
      'IDE & Framework/Android' 카테고리의 다른 글
      • Android Log 라이브러리 Timber
      • Android Log 라이브러리 Logger
      • [Kotlin] PhoneStateListener deprecated, TelephonyCallback로 대체하기
      • [Kotlin] RecyclerView (3) - ItemTouchHelper로 Swipe event 구현
      Greensky0026
      Greensky0026
      점이 모여 선이 된다. 내 삽질도 언젠간 거대한 지하 도시가 되겠지!

      티스토리툴바