이 블로그 검색

2019년 6월 28일 금요일

[react-native] 안드로이드 signed apk 만드는 방법 (안드로이드 배포 막바지 단계)
* 퍼옴: 출처 - https://iam.holy.kiwi/6


react-native 개발이 웬만큼 끝났다면!! 이제 배포를 해야한다.

안드로이드 apk 파일을 플레이스토어에 배포하기 위해서는 고유한 키스토어를 생성해서 다른 사람이 자신의 앱을 올리지 못하도록 해야한다.

안드로이드 signed apk를 만드는 방법을 알아보자!

1. 키스토어 생성


1
keytool -genkey --keystore <YOUR_KEYSTORE_NAME>.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000

cs


2. 생성된 키스토어 파일을 android/app 경로 내에 넣음



3. gradles.properties에 다음 코드를 넣음


1
2
3
4
MYAPP_RELEASE_STORE_FILE=<YOUR_KEYSTORE_NAME>.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=<YOUR_PASSWORD>
MYAPP_RELEASE_KEY_PASSWORD=<YOUR_PASSWORD>
cs


4. app/build.gradle에 다음 코드를 넣음


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
...
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
        }
    }
}
...
cs



5. 다음 명령어를 통해 개발자 모드를 끈다. (이 작업은 프로젝트 루트 폴더에서 해야 한다. - 다른 곳에서 안됨, 그리고 이 작업을 안하면 만든 apk가 정작 실행이 안됨..;; )


1
2
3
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
cs

6. 다음 명령어를 통해 release apk를 빌드한다.


1
cd android && ./gradlew assembleRelease
cs

7. app-release.apk 파일은 android/app/build/outputs/apk/release 경로에서 찾을 수 있다.

8. 이런 Error 가 나오는 경우가 있음

Execution failed for task ':app:mergeReleaseResources'.Error: Duplicate resources

--> https://stackoverflow.com/questions/53239705/react-native-error-duplicate-resources-android

 그 중 첫 번째 이게 답임

--> After bundling delete the drawable folder from Android Studio. You could find this in android/app/src/main/res/drawable

안드로이드 스트디오까지 갈것 없고 그냥 찾아서 지워주면 됨. drawable 어쩌구 폴더를 전부 다 지워주면 됨.