[React-Native] Android Release APK 생성

2017. 5. 18. 22:28개발/React-Native

반응형

React-Native 에서 Android Signed APK 만드는 방법




1. keytool를 사용하여 key를 생성


--> Windows 환경이라면 C:\Program Files\Java\jdkx.x.x_x\bin  해당 경로에서 명령어를 입력해야한다.

 

1
$ keytool -genkey --keystore my-release-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
cs



--> MAC 환경이라면 적당한 위치에서 위 명령어를 입력해주면 key파일이 생성된다.


명령어를 통해 유효기간이 10000일 짜리인 my-release-key.keystore 파일이 생성된다.






2. 생성된 my-release-key.keystore 파일을 android/app 경로내에 넣어준다.






3. ~/.gradle/gradle.properties 를 다음과 같이 추가한다.


1
2
3
4
MYAPP_RELEASE_STORE_FILE=my-release-key.keystore
MYAPP_RELEASE_KEY_ALIAS=my-key-alias
MYAPP_RELEASE_STORE_PASSWORD=*****
MYAPP_RELEASE_KEY_PASSWORD=*****
cs

 

***** 자리에 본인이 원하는 비밀번호를 입력한다.






4. android/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. 프로젝트 경로에서 다음 명령어를 입력한다.


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

--> 개발자 모드를 꺼주지 않으면 React-Native App에서 기기를 흔들었을 때 개발자 메뉴가 나타나게 된다.

--> 명령어를 입력하면 assets 폴더가 없다는 오류 메세지가 나오게 된다.

--> 명령어를 입력하기 전에 android/app/src/main 경로내에 assets 이름의 폴더를 미리 생성해주면 된다.







6. release apk 를 생성 명령어를 입력한다.


1
cd android && ./gradlew assembleRelease
cs







7. apk 경로에 들어가서 생성된 apk를 확인한다.


경로 --> 프로젝트폴더/android/app/build/outputs/apk/app-release.apk

만약 해당 경로에 app-release-unsigned.apk 이름의 파일밖에 없다면 apk에 서명파일이 제대로 등록되지 않은 것이다.






출처 : Stack Overflow

        React-Native 공식 홈페이지


반응형