[RN] react-native-config 와 fastlane 연동 문제

동동·2022년 6월 10일
0

회사에서 react-native-config 를 사용지 Android 에서 발생한 문제 해결 기록이다.

이슈

현재 회사에서 react-native-config 를 통해 3rd lib token 값을 관리한다.
그런데 그 중 운여에서 analytic 의 기록이 누락 되는 것을 확인 원인을 찾는 중, react-native-config 의 설정 파일인 .env 로딩이 제대로 안되는 것을 발견하였다.

원인 분석

현재 회사에서 product, staging, dev 환경에 때라 분리하여 root 디렉토리 하위에 env 폴더를 만들어 .env.product, .env.staging, .env.dev 파일로 분리해서 저장 되어 있다. 그리고 이 것을 build type 에 맞게 가지고 와서 사용할 수 있도록 app/build.gradle 에 아래 설정 값을 추가 해 두었다.

project.ext.envConfigFiles = [
        devdebug: "./env/.env.dev",
        devrelease: "./env/.env.dev",
        stagingdebug: "./env/.env.staging",
        stagingrelease: "./env/.env.staging",
        productdebug: "./env/.env.product",
        productrelease: "./env/.env.product"
]

위와 같이 설정 이후 아래 명령어로 빌드하면 잘 빌드 되었다.

react-native run-android --variant devDebug

그런데 왜 마켓에 올라간 버전은 문제가 되었던 것일까??

처음에는 운영 버전 build 시 사용되는 암호화 프로그램 문제라고 생각 해 보고 암호화 과정을 빼고 build 를 해 보았지만 마찬가지였다.
그리고 혹시 playConsole 에 올리면서 문제가 발생한건가 싶어서 찾아보았지만 원인이 아니였다.

그럼 테스트 빌드와 운영 빌드중 무엇이 문제일까...

해결

결국 문제는 운영 빌드시 사용하는 fastlane 이 문제였다.
현재 회사에서 CI/CD tool 로 fastlane 을 사용하고 있는데, fastlane 으로 빌드시 시스템 프로퍼티가 주어지지 않아서였다.

gradle(
      task: 'assemble',
      build_type: 'release',
      flavor: 'product',
      system_properties: {
        "ENVFILE": "./env/.env.product"
      }
    )

이렇게 하니 문제 없이 잘 빌드 되었다.

또 다른 의문점

그럼 왜 지금까지 잘 되었던 거지??
사실 react-native-config 와 fastlane 연동은 이전부터 잘 되던것이고, 이전 반영부터 문제가 발생하던거라 그 동안 왜 잘 되었는지 의문이였다.

찾아보니 react-native-config 를 사용하기 위해 ios 에서는 android 와 다르게 .env 파일을 해당 build type 에 따라 root 디렉토리에 .env 파일로 복사해서 그 파일을 읽도록 되어 있었다.
그런데 여러 빌드를 하면서 처음 빌드시에는 .env.prodcut 파일이 잘 복사되어 잘 되던것이 마침 이전 빌드에 .env.dev 가 복사 되어 문제가 발생했던 것 ;;;

0개의 댓글