Keystore 생성
1
2
cd android/app
keytool -genkey -v -keystore custom-key-name.keystore -alias custom-alias-name -keyalg RSA -keysize 2048 -validity 10000
React Native 프로젝트 폴더 안에 있는 android/app 폴더로 이동한 다음, keytools 명령어를 실행합니다.
 keytools 명령어 부분의 custom-key-name과 custom-alias-name을 취향에 맞게(?) 변경합니다.
 그러면 사용자의 이름이 뭐고, 조직이 뭐고, 조직 이름이 뭐고 등등 여러가지 질문이 나올텐데 맞게 입력하면 마지막에 해당 답변들이 모두 맞는지를 다시 여쭤봅니다. 이 때 y를 입력하고 엔터를 누르면 keystore 파일이 android/app 폴더에 생성 됩니다.
Keystore 정보 기재
앱을 빌드할 때 해당 서명 파일에 대한 정보를 넘겨주기 위해 android/gradle.properties 파일에 Keystore에 대한 정보를 입력합니다.
1
2
3
4
MYAPP_RELEASE_STORE_FILE=custom-key-name.keystore
MYAPP_RELEASE_KEY_ALIAS=custom-alias-name
MYAPP_RELEASE_STORE_PASSWORD=password
MYAPP_RELEASE_KEY_PASSWORD=password
custom-key-name과 custom-alias-name은 위에 Keystore 파일을 생성할 때 입력했던 것과 동일하게 설정해주시고, Release Store Password와 Release Key Password는 Keystore 파일을 생성할 때 물어봤던 질문에 답변했던 비밀번호를 똑같이 입력합니다.
Keystore 실제 적용
android/app/build.gradle 파일을 열어 아래 내용을 추가합니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            if (project.hasProperty('MYAPP_RELEASE_STORE_FILE')) {
                storeFile file(MYAPP_RELEASE_STORE_FILE)
                storePassword MYAPP_RELEASE_STORE_PASSWORD
                keyAlias MYAPP_RELEASE_KEY_ALIAS
                keyPassword MYAPP_RELEASE_KEY_PASSWORD
            }
        }
    }
    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }
}
android/app/build.gradle 파일을 열어보시면 이미 기존에 생성되어 있던 android Property가 있는데, 그 내부를 살펴보면 defaultConfig이라는 Property가 존재합니다.
 해당 Property 바로 아랫줄에 위에 적힌 signingConfigs 객체를 추가합니다.
그 다음, androidProperty 내부를 살펴보면 buildTypes라는 Property가 이미 있을텐데, 그 내부에 release Property 안에 signingConfig signingConfigs.release 를 추가합니다.
빌드하기
1
2
cd android
./gradlew assembleRelease
위 명령어를 입력하면 빌드가 완료되고, android/app/build/output/apk/release 안에 .apk 파일이 생성됩니다.