본문 바로가기

안드로이드/안드로이드

[안드로이드] release 컴파일

안드로이드 컴파일에는 두 가지 종류가 있다.

debug 와 release

debug모드는 우리가 개발 시 흔히 사용하는 모드이며 테스트 모드라고 생각하면 편하다.

 

release모드는 테스트가 끝나 배포할 상황에 사용하는 모드이다. 

 

그렇다면 두가지의 차이점은 무엇일까?

 

차이점

대표적인 차이점으로는 debug모드는 실행파일에 디버깅정보를 포함시키기 때문에 용량이 커진다.

반대로 release모드는 디버깅 정보 없이 컴파일되어 실행파일로 만들어 진다.

또한 메모리 할당, 초기화도 모드 별로 다르다. (debug > release)

따라서 debug모드에서는 오류없이 정상적으로 실행되던 기능이 release모드에서는 오류가 발생하는 경우도 있다.

 

release모드 사용 방법

release모드 사용에는 keystore가 필요하다.

 

keystore는 앱 개발자에 대한 정보가 포함되어 있는 암호화된 파일이다.

앱 배포에 사용되며, Apk 또는 Bundle 파일을 생성할 때 keystore를 사용하여 인증하기 때문에 매우 중요하게 관리되어야 한다.

비유하자면 인감도장과 같은 것이다.

 

keystore 생성 방법

1. Build > Generate Signed Bundle or APK > APK

 

2. Create new

 

3. 경로 지정 및 파일명

파일명까지 입력했다면 Key store path 에서 맨 뒤에 .jks를 .keystore로 바꿔준다.

 

4. 

 

Alias : keystore의 별명

 

이후 진행하면 해당 경로에 keystore파일이 생성되어 있을 것이다.

 

Setting

local.properties

sdk.dir=C\:\\Users\\...
keytool_alias = test
storePassword = 1234
storeFile = 파일 경로
keyPassword = 1234

 

큰 따옴표 없이 적어주어야 한다.

 

 

build.gradle (Module)

signingConfigs {
        Properties properties = new Properties()
        properties.load(new FileInputStream("$project.rootDir/local.properties"))
        properties.each { prop ->
            project.ext.set(prop.key, prop.value)
        }

        release {
            storeFile file(properties["storeFile"])
            storePassword properties["storePassword"]
            keyAlias properties["keytool_alias"]
            keyPassword properties["keyPassword"]
        }
}

buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }