[REACT NATIVE] 안드로이드 APK(AAB) 파일 생성하고 Release 빌드하기
REACT NATIVE

[REACT NATIVE] 안드로이드 APK(AAB) 파일 생성하고 Release 빌드하기

1. keystore 생성

터미널을 켜고 프로젝트 폴더에서 아래를 실행해준다.

여기서 your_key_name 과 your_key_alias 에 원하는 이름을 작성해준다.

your_key_alias 이름은 기억해두자!

keytool -genkey -v -keystore your_key_name.keystore -alias your_key_alias -keyalg RSA -keysize 2048 -validity 10000

위 명령어를 실행하면 비밀번호를 포함해서 여러 질문들이 나온다. 입력해주자. 비밀번호를 제외하고는 그냥 엔터치면 unknown 으로 입력되고 넘어간다. 필수사항은 아니니 그냥 엔터치고 넘어가도 된다.

Enter your keystore password: 
Re-enter new password: 
What is your first and last name? [unknown]:  // 개발자 이름
What is the name of your organizational unit? [unknown]:  // 회사 개발팀 
What is the name of your organization? [unknown]:  // 회사이름
What is the name of your city or Locality? [unknown]: // 대한민국
What is the name of your State or Province? [unknown]:// 지역
What is the two-letter country code for this unit? [unknown]: // 국가코드 알파벳 KR

전부 다 입력 후 마지막으로 비밀번호를 재확인하는데 입력하면 프로젝트 폴더에 your_key_name.keystore 파일이 생성된다.

혹시 플레이 스토어에 출시했다면 릴리즈 키스토어는 꼭 백업해둡시다.

플레이스토어 해당 키스토어로 한 번 출시하면 이후 새로운 버전을 올릴 때도 반드시 해당 키스토어로 빌드해서 올려야한다.

예전에 실수로 지워진 적이 있어 구글에 연락하고, 추가 자료를 보내서 겨우 바꿨던 기억이 있다. 번거롭고 싶지 않다면 출시 후에는 꼭 백업!

 

 

2. android > app 폴더로 keystroe 파일 이동

헷갈리면 debug.keystore 파일이랑 같은 곳에 놓으면 됩니다.

 

 

 

3. Gradle 설정

a. android > gradle.properties 에 다음 코드를 추가해줍시다.

MYAPP_UPLOAD_STORE_FILE=your_key_name.keystore
MYAPP_UPLOAD_KEY_ALIAS=your_key_alias
MYAPP_UPLOAD_STORE_PASSWORD=비밀번호
MYAPP_UPLOAD_KEY_PASSWORD=비밀번호

 

b. android > app > build.gradle 에 가서 다음과 같이 코드를 추가해줍니다.

 

1) signingConfigs 에 debug 부분 밖에 없는데, release 부분을 추가해줍니다.

2) 바로 아래 buildTypes의 release에 signingConfig signingConfigs.release

signingConfigs {
        debug {
            ...
        }
        // 1) 여기부터
        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 {
        debug {
            ...
        }
        release {
            signingConfig signingConfigs.debug            
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            
            // 2) release 추가!
            signingConfig signingConfigs.release
        }
    }

 

 

4. APK & AAB 생성

저는 출시할 때는 AAB로 하고, 디바이스 테스트 할 때는 APK 로 합니다.

cd android
./gradlew bundleRelease // AAB 생성
./gradlew assembleRelease // APK 생성

 

 

 

※ 빌드 시 오류나는 경우

1. JVM heap 오류

빌드 시 메모리가 부족해서 나는 경우. 

android > gradle.properties 에 다음 줄을 하나 추가해주자

org.gradle.jvmargs=-Xmx4096M

 

2. multiExtDexDebug 오류

a. android > build.gradle에 다음 부분을 추가해주자

defaultConfig {
        ...
        // 1) 추가!
        multiDexEnabled true
  }
  
  ...
  
 dependencies {
    ...
	// 2) 추가!
    implementation 'androidx.multidex:multidex:2.0.1'
}

 

b. android > app > src > main > java > ... > MainApplication.java

먼저 import를 해주고 아래 ReactApplication 클래스 부분을 다음과 같이 변경해준다.

import androidx.multidex.MultiDexApplication;

public class MainApplication extends MultiDexApplication implements ReactApplication {
...
}

 

반응형

'REACT NATIVE' 카테고리의 다른 글

[REACT NATIVE] react navigation 정리  (0) 2021.11.12
[REACT NATIVE] 다크모드 disable  (0) 2021.11.11