android 환경 변수 expo를 통해 설정하기

김기수·2026년 3월 14일
post-thumbnail

expo/env를 통한 환경변수를 설정할때는 .env에다 EXPO_PUBLIC을 앞에다 붙여야 인식을 할 수 있다.

Environment variables in Expo

expo prebuild를 한 상태에서 android native 파일에 환경변수를 넣어주기 위해서는 다음과 같은 작업을 수행해야한다.

react-native-kakao 라이브러리를 사용하기위해 native key를 android 네이티브 파일에 넣어주기 때문에 다음과 같은 작업을 실행했다.

app/build.gradle 파일

// NOTE: env파일을 위한 설정
def kakaoKey
def dotenv = new Properties()
def envFile = file("${rootProject.projectDir}/../.env")
if(envFile.exists()){
    envFile.withInputStream{stream -> dotenv.load(stream)}
    kakaoKey = dotenv['EXPO_PUBLIC_KAKAO_NATIVE_KEY']
}else{
    // NOTE: eas build 추후 배포를 위한 설정 
    kakaoKey = System.getenv("EXPO_PUBLIC_KAKAO_NATIVE_KEY")
}

루트 밖에 env를 통해 EXPO_PUBIC_KAKAO_NATIVE_KEY를 꺼내온다. 또한 eas 빌드 때를 생각해 SYstem.getenv 또한 추가한다.

defaultConfig {
        applicationId 'com.kgs9843.zipbap'
        minSdkVersion rootProject.ext.minSdkVersion
        targetSdkVersion rootProject.ext.targetSdkVersion
        versionCode 1
        versionName "1.0.0"

        
        // NOTE: env파일을 위한 설정
        // resValue는 strings.xml에 kakaoKey 삽입
        // placeholders는 AndroidManifest.xml에 치환 가능
        if (kakaoKey == null){
            throw new GradleException("KAKAO_NATIVE_APP_KET not found in .env file")
        }
        manifestPlaceholders = [KAKAO_NATIVE_APP_KEY: kakaoKey]
        resValue "string", "kakao_app_key", kakaoKey
    }

defaultConfig에 다음과 같이 정의 해준다.

kakaokey가 null일때는 오류를 throw 해주고

manifestPlachlders에 kakaokey를 정의시켜 manifest에서 환경변수를 사용할 수 있게 해준다

resVale를 통해 string.xml에서의 환경변수를 사용가능하게 해준다.

What's the difference between buildConfigField, resValue and manifestPlaceholders?

[Android] API Key 관리 (key 쉽게 숨기는 방법)

profile
엄청난 클라우드 고수

0개의 댓글