android-studio - Android Studio 中有沒(méi)有類似C#的#if DEBUG功能
問(wèn)題描述
VisualStudio中如果當(dāng)前模式為DEBUG,那么我在代碼中可以在#if DEBUG中執(zhí)行一些代碼,比如Debug模式中訪問(wèn)的API為www.aaa.com。而正式發(fā)布release時(shí)API是www.bbb.com,這在vs中是可以。不知道Android Studio中有沒(méi)有類似的功能。
問(wèn)題解答
回答1:Android Studio 會(huì)自動(dòng)添加 BuildConfig 類,這個(gè)類有一個(gè)字段叫 DEBUG,它的值根據(jù)當(dāng)前的編譯方式自動(dòng)生成,編譯方式為 debug 時(shí)值為 true,release 時(shí)值為 false。所以可以根據(jù)這個(gè)特點(diǎn)在函數(shù)中添加 if (BuildConfig.DEBUG) 類來(lái)實(shí)現(xiàn)類似的功能,一個(gè)比較常見(jiàn)的例子是自定義 Log 類,使得在 debug 時(shí)輸出 log,release 時(shí)不輸出:
public void d(String tag, String message) { if (BuildConfig.DEBUG) {Log.d(tag, message); }}回答2:
沒(méi)有,Java不支持宏定義,所有的調(diào)試信息都會(huì)進(jìn)入編譯結(jié)果。你只能在程序中設(shè)置變量讓調(diào)試程序在生產(chǎn)環(huán)境中不執(zhí)行。Android Manifest中有版本信息,默認(rèn)會(huì)生產(chǎn)Debug和Release兩種版本,你可以通過(guò)程序判斷來(lái)實(shí)現(xiàn)切換參數(shù)。
回答3:AS的調(diào)試過(guò)程中可以動(dòng)態(tài)設(shè)置變量值~
回答4:這個(gè)功能很雞肋,明明可以自己寫代碼實(shí)現(xiàn)的(不超過(guò)3行代碼就能搞定),非要android原生去實(shí)現(xiàn),如你所愿的話安卓開(kāi)發(fā)將會(huì)更加復(fù)雜,我們需要記住更多雞肋功能了(得不償失)
回答5:可以利用BuildConfig來(lái)實(shí)現(xiàn)
回答6:可以,借助gradle配置:變量、版本信息
回答7:看看android studio的debug技巧,http://weishu.me/2015/12/21/a...,不要太牛逼
相關(guān)文章:
1. 請(qǐng)教一條mysql的sql語(yǔ)句寫法;2. javascript - react+百度地圖3. angular.js - 關(guān)于angular react vue 我們?cè)谑裁磳?shí)際的開(kāi)發(fā)項(xiàng)目中使用?如何選擇?4. html5 - iOS的webview加載出來(lái)的H5網(wǎng)頁(yè),怎么修改html標(biāo)簽select的樣式字體?5. vue.js - vue+webpack+vue-router 部署到nginx服務(wù)器下,非根目錄,前后端怎樣配置文件?6. javascript - 為什么當(dāng)index等于5的時(shí)候,不在當(dāng)前頁(yè)面跳轉(zhuǎn)到百度?不跳轉(zhuǎn)的代碼在倒數(shù)第五行7. 手動(dòng)啟動(dòng)mysql服務(wù)出錯(cuò),1067錯(cuò)誤,如何解決呢?8. 這是什么情況???9. index.php錯(cuò)誤,求指點(diǎn)10. 跟著課件一模一樣的操作使用tp6,出現(xiàn)了錯(cuò)誤
