inblog logo
|
RN 삽질 일지

    RN - CODE PUSH [ Android ]

    react native 안드로이드 코드푸시 적용하기
    김보람's avatar
    김보람
    Jan 11, 2024
    RN - CODE PUSH [ Android ]
    Contents
    CODE PUSH[ ANDROID ]

    CODE PUSH

    앱의 JavaScript 코드나 리소스(예: 이미지, 스타일 등)를 스토어 앱 업데이트를 통하지 않고 유저의 앱에 바로 업데이트하는 기능

    ⚠️ 네이티브를 통한 코드는 코드푸쉬가 불가능하며 JS 또는 자산만 코드푸쉬가 가능하다.

    code push 과정 요약

    1. 프로젝트의 JavaScript 코드나 리소스(예: 이미지, 스타일 등)를 변경

    2. AppCenter에 업데이트 배포

    3. 기존 앱 실행시, 앱은 AppCenter 서버와 통신하여 새로운 업데이트가 있는지 확인

    4. 새로운 업데이트가 있을 경우, 앱은 백그라운드에서 자동으로 해당 업데이트 파일을 다운

    5. 다운로드가 완료되면, 앱은 그 즉시 또는 사용자가 앱을 다시 시작할 때(선택 가능) 해당 업데이트를 적용

      1. 기본적으로 재실행 될 때 업데이트하지만 아래와 같은 옵션으로 앱의 재시작 없이도 업데이트된 내용을 반영할 수 있다
        installMode: CodePush.InstallMode.IMMEDIATE

    6. 업데이트가 성공적으로 적용되면 해덩 버전 실행

    [ ANDROID ]

    1. 앱센터 홈페이지 접속

    2. 엡센터에 내 앱 등록

    3. 프로젝트에 관련 패키지 다운로드

    yarn add appcenter
    yarn add appcenter-analytics
    yarn add appcenter-crashes
    yarn add react-native-code-push
    npm i -g appcenter-cli      
    1. appcenter-config.json 파일 생성

    //파일 위치: android/app/src/main/assets/
    {   app_secret: "{Your app secret here}" }
    1. res/values/strings.xml 수정

    <string name="appCenterCrashes_whenToSendCrashes" moduleConfig="true" translatable="false">DO_NOT_ASK_JAVASCRIPT</string>
    <string name="appCenterAnalytics_whenToEnableAnalytics" moduleConfig="true" translatable="false">ALWAYS_SEND</string>
    <string moduleConfig="true" name="CodePushDeploymentKey">요기는 본인 키</string>
    1. settings.gradle 수정

    include ':app', ':react-native-code-push'
    project(':react-native-code-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-code-push/android/app')
    
    1. android/app/build.gradle 수정

      1. KEY는 android/gradle.properties에 보관한다

      2. KEY를 모를경우 터미널에 아래와 같이 명령하면 찾을수 있고
        appcenter codepush deployment list -a <ownerName>/<appName> -k

        위 명령어로 반환되는 값이 없을경우 appcenter에서
        “본인앱 선택/Distribute/CodePush”내 [Create standard deployments]버튼을 눌러 생성해준 후 재시도

    //android/app/build.gradle 
    ...
    android {
        ...
        buildTypes {
            
          releaseStaging {
              ...
              resValue "string", "CodePushDeploymentKey",<STAGING_KEY>
              matchingFallbacks = ['release']
              ...
          }
          release {
              ...
              resValue "string", "CodePushDeploymentKey",<PRODUCTION_KEY>
              ...
          }
        }
        
    }
    ...
    apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"
    1. MainApplication.java 수정

    ...
    import com.microsoft.codepush.react.CodePush;
    ...
    new DefaultReactNativeHost(this) {
    ...
    //이블럭 최하단에 아래 구문 추가
        @Override
        protected String getJSBundleFile() {
          return CodePush.getJSBundleFile();
        }
    //
    }
    1. App.tsx를 CodePush로 감싸주기

    import CodePush from 'react-native-code-push';
    
    ...
    ...
    ...
    export default CodePush(App);
    1. 테스트

      1. 위 프로세스가 끝났다면 APK 추출 후 디바이스에 설치

      2. 파일 수정 후 아래 명령어로 appcenter 업데이트

      appcenter codepush release-react -a 오너이름/앱이름 -d Production
      or     
      appcenter codepush release-react -a 오너이름/앱이름 -d Staging     
      1. 디바이스에 설치한 앱이 수정되었는지 확인

      **약 2~3분정도 소요되는 것으로 보임

    Share article
    Contents
    CODE PUSH[ ANDROID ]

    김보람 | 930802qhfka@gmail.com

    RSS·Powered by Inblog