build.gradle最佳實踐之buildConfigField


使用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的輸出了,這里當然可以指定更多的關鍵字,自己根據項目需求發揮即可。







免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM