본문 바로가기
네이티브/Android

Android build.gradle 주요 정보 보안

by 우보틀 2021. 12. 5.

buid.gradle 파일은 gitignore에 추가되어 있지 않습니다.
git 저장소가 노출되면 빌드에 필요한 password나 키들에 대한 정보가 노출될 수 있습니다.

이는 곧 스토어에 올라가 있는 앱이 다른 앱으로 대체될 수 있다는 이야기 입니다.

 

gradle 은 groovy 언어로 이루어진 빌드 도구 입니다.

groovy언어와 local.properties 파일을 이용하여 이를 변경합니다.

 

변경 전 (key 값들은 임의의 값으로 대체 하겠습니다.)

...
signingConfigs {
  debugConfig {
    storeFile file('../test.jks')
    storePassword 'test123'
    keyAlias 'test'
    keyPassword 'test123'
  }
  releaseConfig {
    storeFile file('../test.jks')
    storePassword 'test1234'
    keyAlias 'test1234'
    keyPassword 'test1234'
  }
}

buildTypes {
  debug {
    minifyEnabled false
    prouardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    signingConfig signingConfigs.debugConfig
  }
  release {
      minifyEnabled false
    prouardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    signingConfig signingConfigs.releaseConfig
  }  
}

 


 

변경 후

 

local.properties에 키값에 대한 정보를 추가합니다.

.gitignore파일에 local.properties가 추가되어 있는지 확인합니다(기본세팅으로 포함되어 있을 것입니다.)

(안드로이드 개발시 api의 키값에 대한 정보도 local.properties에 추가해놓고 build.gradle에서 변수로 설정, 프로젝트 코드 내부에서 불러와 사용하기도 한다고 합니다.)

// local.properties
...
STORE_FILE=../test.jks
STORE_PASSWORD=test1234
KEY_ALIAS=test
KEY_PASSWORD=test1234


// build.gradle

apply plugin: 'com.android.application'

def localPropertiesFile = rootProject.file('local.properties');
def localProperties = new Properties();
localProperties.load(new FileInputStream(localPropertiesFile))
def storeFileValue = file(localProperties['STORE_FILE'])
def storePasswordValue = localProperties['STORE_PASSWORD']
def keyAliasValue = localProperties['KEY_ALIAS']
def keyPasswordValue = localProperties['KEY_PASSWORD']

...

  signingConfigs {
    debugConfig {
          storeFile storeFileValue
          storePassword storePasswordValue
          keyAlias keyAliasValue
          keyPassword keyPasswordValue
    }
    releaseConfig {
        storeFile storeFileValue
        storePassword storePasswordValue
        keyAlias keyAliasValue
        keyPassword keyPasswordValue
    }
    buildTypes {
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.debugConfig
        }
          release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            signingConfig signingConfigs.releaseConfig
        }
    }
  }

 

스토어에 올리기 위해 aab(android app bundle)파일을 생성할 시에는 local.properties의 정보를 가지고 생성하면 됩니다.

gitignore에 포함되어 있으므로 협업하는 개발자들끼리는 까먹지 않고 공유되어야 하는 내용입니다!