ProgramingTip

Android Studio에서 실행에 빌드 변형을 가져 오는 방법은 무엇입니까?

bestdevel 2020. 12. 11. 19:13
반응형

Android Studio에서 실행에 빌드 변형을 가져 오는 방법은 무엇입니까?


작동 중에 빌드 변형을하고 싶습니다. 추가 구성이나 코드없이 가능합니까?


생성 된 BuildConfig클래스를 사용.

public final class BuildConfig {
  public static final boolean DEBUG = Boolean.parseBoolean("true");
  public static final String APPLCATION_ID = "com.example.app";
  public static final String BUILD_TYPE = "debug";
  public static final String FLAVOR = "";
  public static final int VERSION_CODE = 1;
  public static final String VERSION_NAME = "";
}

또 다른 옵션은 각 빌드 변형에 대해 별도의 빌드 구성 변수를 만들고 다음과 같이 코드에서 사용하는 것입니다.

build.gradle 파일에서 :

productFlavors {

    production {
        buildConfigField "String", "BUILD_VARIANT", "\"prod\""
    }

    dev {
        buildConfigField "String", "BUILD_VARIANT", "\"dev\""
    }       
}

코드에서 사용하는 비용 :

if (BuildConfig.BUILD_VARIANT.equals("prod")){ // do something cool }

시도 할 수 있습니다.

getPackageName(); 

build.gradle에서 정의한 내용을 반환합니다.

productFlavours{
  flavour1{
     applicationId 'com.example.package.flavour1'
  }
  flavour2{
     applicationId 'com.example.package.flavour2'
  }
}

다음은 BuildConfig다른 맛 을 정의하고 얻는 예입니다.

android {

    defaultConfig {
        ...
    buildTypes {
        ...
    }

    flavorDimensions "default"
    productFlavors {

        develop {
            applicationIdSuffix ".dev"
            versionNameSuffix "-dev"
        }

        staging {
            applicationIdSuffix ".stg"
            versionNameSuffix "-stg"
        }

        production {
            applicationIdSuffix ""
            versionNameSuffix ""
        }
    }

    applicationVariants.all { variant ->

        def BASE_URL = ""

        if (variant.getName().contains("develop")) {
            BASE_URL = "https://localhost:8080.com/"
        } else if (variant.getName().contains("staging")) {
            BASE_URL = "https://stagingdomain.com/"
        } else if (variant.getName().contains("production")) {
            BASE_URL = "https://productdomain.com/"
        }
        variant.buildConfigField "String", "BASE_URL", "\"${BASE_URL}\""

    }
}

사용

BuildConfig.BASE_URL


이미 맛을 내고 소유 할 수있는 gradle에 추가 할 수있는 추가 필드가 없습니다. 빌드 세부 정보를 얻으려면 간단한 단계를 수행하십시오.

빌드 변형 : BuildConfig.FLAVOR
빌드 버전 코드 : BuildConfig.VERSION_CODE
빌드 버전 이름 : BuildConfig.VERSION_NAME

참고 URL : https://stackoverflow.com/questions/23431354/how-to-get-the-build-variant-at-runtime-in-android-studio

반응형