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 파일이 생성됩니다.