우찬쓰 개발블로그

Gradle에서 각 test,staging,real server url 세팅하기 본문

안드로이드/안드로이드 개발

Gradle에서 각 test,staging,real server url 세팅하기

이우찬 2019. 4. 10. 13:47
반응형

안드로이드 개발을 하다보면 URL을 정의해야 하는 경우가 생긴다.

 

어떤 개발자들은 하드코딩으로 코드상에 URL을 넣어버리고 test, staging, real 서버를 주석을 풀어가면서 붙는 서버를 바꿔주기도 하는데

 

이는 굉장히 구리고, 실수의 여지가 있는 안좋은 방법이다.

 

그래서 우리는 Gradle에서 각 URL 세팅을 명시하고 세팅해 보도록 하자.

 

먼저 app 수준의 gradle로 가보자.

 

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "test.test.test"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 34
        versionName "1.1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }

    buildTypes {

        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

 

보통 이렇게 세팅하지만, 여기서 추가로 URL에 따른 옵션을 주도록 해보자.

 

android {
    compileSdkVersion 28
    defaultConfig {
        applicationId "test.test.test"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode 34
        versionName "1.1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        multiDexEnabled true
    }

    buildTypes {

        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    flavorDimensions "server"

    productFlavors {
        def SERVER_URL = "SERVER_URL"
        server_test {
            dimension "server"
            buildConfigField "String", SERVER_URL, '"https://test.com"'
        }
        server_staging {
            dimension "server"
            buildConfigField "String", SERVER_URL, '"http://staging.com"'
        }
        server_release {
            dimension "server"
            buildConfigField "String", SERVER_URL, '"https://real.com"'
        }
    }
}

 

productFlavors에 원하는 url들을 추가하고 sync를 돌리고나면 안드로이드 스튜디오 좌측 하단에 Build Variants를 누르면 설정들이 보인다.

 

바로 눈치챘겠지만 dubug와 release에 대해서 각 productFlavors와 조합된 모든 옵션이 나온다.

 

원하는 옵션으로 바꿔주면 언제든 간단하게 URL을 BuildConfig.SERVER_URL로 받아올수 있게 된다.

 

추가로, 만약 다음과 같은 에러를 보게된다면, 혹은 코드 변화가 반영되지 않는다면

 

flavors does not exist on disk.

 

현재 Run을 돌렸을때 Gradle이 다시 돌지 않고 있는 것이다.

 

이 경우 세팅에서 Run을 실행시 Gradle이 돌도록 설정을 추가해 줘야 한다.

 

Edit Configuration으로 들어가서 

 

Before lauch에 Gradle-aware Make를 추가해 주고 Apply 해주면 된다.

 

그다음 다시 Run을 돌리면 정상적으로 동작하는것을 확인할 수 있다.

반응형
Comments