2017-02-23 7 views
0

Android Studio에 다중 앱 프로젝트를 만들고 버전 관리에 Gradle을 사용합니다.Android 앱의 gradle에서 buildConfigField에 액세스

나는 나는 또한

def getDate() { 
    new Date().format('yyyyMMddHHmmss') 
} 

buildConfigField 'String', 'BUILD_DATE', '\"' + getDate() + '\"' 

를 사용

versionName "1.0" 
versionCode 2 
versionNameSuffix = ".alpha1" 

를 사용하고 모두 잘 작동합니다.

가 나는 데

String vN = BuildConfig.versionName; 
int vC = BuildConfig.versionCode; 
String bD = BuildConfig.BUILD_DATE; 

하나의 문제는 가끔 다른 응용 프로그램에서이 정보에 액세스 할 필요가있다 사용하여 해당하지만 코드에 액세스 할 수 있습니다.

나는 다른 응용 프로그램에서 BUILD_DATE에 액세스 할 수있는 방법이

PackageInfo pi = this.getPackageManager().getPackageInfo(packageName, 0); 
String vN = pi.versionName; 
int vC = pi.versionCode; 

와 versionName을하고 versionCode를받을 수 있나요?

답변

0

쉽지 않습니다.

가장 간단한 방법은 buildConfigField에서 resValue에 두 스위치 것, 또는 buildConfigFieldresValue 모두 같은 getDate() 값을 넣어. resValue을 사용하면 날짜가있는 문자열 리소스를 정의 할 수 있습니다. 그런 다음 값이 필요한 앱은 getPackageManager().getResourcesForApplication()을 사용하여 문자열 리소스 값을 읽을 수있는 Resources 개체를 가져올 수 있습니다.

나머지 코드가 문자열 리소스에서 작동 할 수 있다면 buildConfigField에서 resValue으로 전환하면됩니다. 이렇게하면 불편할 것입니다. 빌드 날짜가 BuildConfig이고 문자열 리소스가 있으면 데이터 중복이 조금 있지만 IMHO는 큰 문제가 아닙니다.

+0

완벽하게 작동했습니다. 고맙습니다! –