728x90

깃 브랜치를 분리하여 개발(develop)과 배포(production) 버전의 코드를 나눌 수도 있겠지만, 제공하는 전처리기 변수를 활용하여 분기 처리하는 식으로 관리를 할 수 있다.

 

React Native 코드단에서 뿐만 아니라, 네이티브 코드단에서도 해야하는 경우도 종종 있는데, 간단하니 익혀 활용하면 좋을 듯 하다.

 

 

1. React Native

 

React Native에서는 "__DEV__" 전처리기 변수를 사용하여 개발 모드와 릴리즈 모드를 구분한다. "__DEV__" 변수는 React Native에서 내장되어 있는 전역 변수로, 개발 모드에서는 true로 정의되고, 릴리즈 모드에서는 false로 정의된다. 

if (__DEV__) {
  // 개발 모드에서 실행되는 코드
  console.log('This is a debug log message.');
} else {
  // 릴리즈 모드에서 실행되는 코드
  console.log('This is a release log message.');
}

 

 

위와 같이 if (__DEV__) { ... } 구문을 사용하여 개발 모드와 릴리즈 모드에서 다르게 동작하는 코드를 작성할 수 있다.
반대로, 릴리즈 모드에서는 `if (!__DEV__) { ... }`를 사용하여 해당 조건이 false일 때 실행되는 코드 블록을 작성할 수 있다.

 

https://reactnative.dev/docs/javascript-environment#specific

 

JavaScript Environment · React Native

JavaScript Runtime

reactnative.dev

 

 

2. Java(AOS)

 

Java 클래스에서도 안드로이드와 마찬가지로 Gradle 빌드 시스템에서 buildTypes 블록을 사용하여 개발 모드와 릴리즈 모드를 구분할 수 있다. 

 

buildTypes 블록에서 정의된 빌드 유형에 따라 Gradle에서 자동으로 해당 빌드 유형에 대한 전처리기 상수를 생성하고 이를 사용하여 개발 모드와 릴리즈 모드에서 서로 다른 코드를 실행할 수 있다.

 

예를 들어, 다음과 같이 코드를 작성할 수 있다.

public class MyClass {
    public void myMethod() {
        if (BuildConfig.DEBUG) {
            // 개발 모드에서 실행되는 코드
            Log.d("MyClass", "This is a debug log message.");
        } else {
            // 릴리즈 모드에서 실행되는 코드
            Log.d("MyClass", "This is a release log message.");
        }
    }
}

 

 

위의 코드에서 BuildConfig.DEBUG는 Gradle에서 빌드한 애플리케이션의 메타데이터를 포함하는 BuildConfig 클래스의 static 필드이다. debug`인 경우 true를 반환하고, 릴리즈 모드에서는 false를 반환한다. 

 

 

 

3. Objective-C(iOS)

 

릴리즈 모드를 지칭하는 전처리 변수는 "NDEBUG"이고 개발 모드는 "DEBUG"이다.

따라서 아래와 같이 #ifdef 전처리기를 사용하여, NDEBUG 상수가 정의되어 있는지 여부에 따라 코드를 분기 처리할 수 있다.

#ifndef NDEBUG
// 릴리즈 모드에서 실행되는 코드
NSLog(@"This is a release log message.");
#else
// 디버그 모드에서 실행되는 코드
NSLog(@"This is a debug log message.");
#endif

 

릴리즈 모드에서는 `NSLog(@"This is a release log message.");` 메시지가 출력되고, 디버그 모드에서는 `NSLog(@"This is a debug log message.");` 메시지가 출력된다.

 

 

4. Swift(iOS)

 

Swift에서는 전처리기 대신, 컴파일러 옵션을 사용하여 구분한다.

우선 Xcode에서 프로젝트 설정을 열어, "Build Settings" 탭에서 "Swift Compiler - Custom Flags" 항목을 들어간다. 여기에서 "Other Swift Flags" 항목을 추가하고, `-DDEBUG` 옵션을 추가하면, "DEBUG" 모드에서 해당 옵션이 정의된다. 

릴리즈 모드에서는 "-DRELEASE" 옵션을 추가하여 정의한다. 

이제 컴파일러 옵션에 따라 코드를 분기 처리할 수 있다.

#if DEBUG
// 개발 모드에서 실행되는 코드
print("This is a debug log message.")
#else
// 릴리즈 모드에서 실행되는 코드
print("This is a release log message.")
#endif


릴리즈 모드에서는 `#if RELEASE`를 사용하여 해당 옵션이 정의되어 있는지 여부를 확인할 수 있다.

728x90
복사했습니다!