앱을 출시하기 위해서 빌드를 해야한다.

  1. keytool로 업로드 키를 생성한다.

my-upload-key.keystoremy-key-alias는 변경해도 된다.

$ keytool -genkeypair -v -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
  1. android/gradle.properties에 다음을 추가한다.
MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore
MYAPP_UPLOAD_KEY_ALIAS=my-key-alias
MYAPP_UPLOAD_STORE_PASSWORD=*****
MYAPP_UPLOAD_KEY_PASSWORD=*****
  1. android/app/build.gradle에 다음을 추가한다.
...
android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
                storeFile file(MYAPP_UPLOAD_STORE_FILE)
                storePassword MYAPP_UPLOAD_STORE_PASSWORD
                keyAlias MYAPP_UPLOAD_KEY_ALIAS
                keyPassword MYAPP_UPLOAD_KEY_PASSWORD
            }
        }
    }
    buildTypes {
        release {
            ...
            signingConfig signingConfigs.release
        }
    }
}
...
  1. 릴리스용 APK를 생성한다.
$ cd android
$ ./gradlew bundleRelease

andorid/app/build/outputs/bundle/releaseapp.aab로 생성된다.

  1. CPU 아키텍처별로 APK를 생성한다.
...
def enableSeparateBuildPerCPUArchitecture = true
...

./gradlew assembleRelease를 실행하면 CPU 아키텍처별로

andorid/app/build/outputs/apk/release에 APK가 생성된다.

  1. android/app/build.gradle에 다음을 변경하면 파일 크기를 줄일 수 있다.
...
def enableProguardInReleaseBuilds = true
...

참고 문헌

  1. https://facebook.github.io/react-native/docs/signed-apk-android