在AndroidStudio中構建項目的時候,可以通過build.gradle來配置一些常量,用於全局使用,比如說APP的版本號、作者名、公司名等等。那麼怎麼實現這些配置呢?
首先我們打開android項目app目錄下的build.gradle文件
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.xing.app.xxx"
minSdkVersion 17
targetSdkVersion 29
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
}
dependencies {
//省略部分代碼
}
如果沒有意外的話,打開應該是這個樣子的
重點我們看
defaultConfig {
applicationId "com.xing.app.xxx"
minSdkVersion 17
targetSdkVersion 29
versionCode 1
versionName "1.0"
multiDexEnabled true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
//配置APP變量
buildConfigField ("boolean", "isOpen", "false")
buildConfigField ("String", "str", "\"測試字符\"")
buildConfigField ("int", "inin", "18")
}
當我們加入buildConfigField語句之後,rebuild一下項目,就可以在該項目中的任何一個地方應用這個isOpen變量啦,比如
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
//就像這樣
boolean isOpen = BuildConfig.isOpen;
String str = BuildConfig.str;
int tmp = BuildConfig.inin;
}
}
可能眼睛尖的小夥伴已經發現了,爲什麼定義String類型的時候,要用轉義字符加雙引號呢?因爲字符串類型較爲特殊,在你編譯完成之後如果不加雙引號,就會發現BuildConfig類報錯。。。原因就是字符串在定義的時候沒有雙引號
與此同時,BuildConfig類的情況是這樣的
public final class BuildConfig {
//下面就是我們通過field添加進來的變量
// Fields from default config.
public static final int inin = 18;
public static final boolean isOpen = false;
public static final String str = "測試字符";//如果不加轉義字符就會使這裏報錯
}