使用AndroidStudio進行開發,其中很重要的一個文件就是build.gradle,他是整個項目的控制中心,這里收集一些日常會用到的語法或者使用技巧,以備后用。這篇博客主要說明 buildTypes節點下使用buildConfigField。
下面是默認的buildTypes形式
buildTypes {
release {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
但是這里其實默認還有一個debug type,只不過默認不顯示,顯示完整如下
buildTypes {
release {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug{
}
}
這兩者用於指定不同的build type,當我們打包編譯項目時,我們能不能這里就可以設置一些參數信息,直接可以作用於項目,從而在項目中,動態根據build.gradle中設置的信息,進行一些代碼層面的邏輯處理,比如在debug type下正常輸出日志信息,但是release type下,屏蔽日志輸出。那么就可以通過buildConfigField進行動態設置如下
buildTypes {
release {
buildConfigField "boolean", "LOG_DEBUG", "false"
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug{
buildConfigField "boolean", "LOG_DEBUG", "true"
}
}
可以看到在上面指定了一個key為LOG_DEBUG的field,在release type下為false,在debug type下為true,具體在代碼中就可以這樣使用。
因為我在項目中使用了開源庫 Logger 進行日志輸出,這個lib可以在Application的onCreate方法中進行開關設置,從而控制Log日志是否顯示在console,所以最終使用如下:
if(BuildConfig.LOG_DEBUG){
Logger.init("AppPlusLog").setLogLevel(LogLevel.FULL);
}else{
Logger.init("AppPlusLog").setLogLevel(LogLevel.None);
}
可以看到在build.gradle中設置的屬性LOG_DEBUG,在這里可以直接通過BuildConfig這個類進行訪問,此時就可以動態的控制Log的輸出了,這里當然可以指定更多的關鍵字,自己根據項目需求發揮即可。