android-studio - Android Studio 中有沒有類似C#的#if DEBUG功能
問題描述
VisualStudio中如果當(dāng)前模式為DEBUG,那么我在代碼中可以在#if DEBUG中執(zhí)行一些代碼,比如Debug模式中訪問的API為www.aaa.com。而正式發(fā)布release時(shí)API是www.bbb.com,這在vs中是可以。不知道Android Studio中有沒有類似的功能。
問題解答
回答1:Android Studio 會自動添加 BuildConfig 類,這個(gè)類有一個(gè)字段叫 DEBUG,它的值根據(jù)當(dāng)前的編譯方式自動生成,編譯方式為 debug 時(shí)值為 true,release 時(shí)值為 false。所以可以根據(jù)這個(gè)特點(diǎn)在函數(shù)中添加 if (BuildConfig.DEBUG) 類來實(shí)現(xiàn)類似的功能,一個(gè)比較常見的例子是自定義 Log 類,使得在 debug 時(shí)輸出 log,release 時(shí)不輸出:
public void d(String tag, String message) { if (BuildConfig.DEBUG) {Log.d(tag, message); }}回答2:
沒有,Java不支持宏定義,所有的調(diào)試信息都會進(jìn)入編譯結(jié)果。你只能在程序中設(shè)置變量讓調(diào)試程序在生產(chǎn)環(huán)境中不執(zhí)行。Android Manifest中有版本信息,默認(rèn)會生產(chǎn)Debug和Release兩種版本,你可以通過程序判斷來實(shí)現(xiàn)切換參數(shù)。
回答3:AS的調(diào)試過程中可以動態(tài)設(shè)置變量值~
回答4:這個(gè)功能很雞肋,明明可以自己寫代碼實(shí)現(xiàn)的(不超過3行代碼就能搞定),非要android原生去實(shí)現(xiàn),如你所愿的話安卓開發(fā)將會更加復(fù)雜,我們需要記住更多雞肋功能了(得不償失)
回答5:可以利用BuildConfig來實(shí)現(xiàn)
回答6:可以,借助gradle配置:變量、版本信息
回答7:看看android studio的debug技巧,http://weishu.me/2015/12/21/a...,不要太牛逼
相關(guān)文章:
1. HTML5不支持frameset一般怎么解決?2. javascript - Vue的計(jì)算屬性底層依賴原理是怎么樣?3. javascript - jquery怎么給select option一個(gè)點(diǎn)擊時(shí)觸發(fā)的事件,如圖 如果選擇自定義觸發(fā)一個(gè)時(shí)間?4. 網(wǎng)頁爬蟲 - python爬蟲用BeautifulSoup爬取<s>元素并寫入字典,但某些div下沒有這一元素,導(dǎo)致自動寫入下一條,如何解決?5. 百度地圖api - Android百度地圖SDK,MapView上層按鈕可見卻不可觸,怎么解決?6. mysql 獲取時(shí)間函數(shù)unix_timestamp 問題?7. html5 - canvas中的mousedrag事件,為什么鼠標(biāo)拖出canvas,然后再次移入canvas,drag事件還觸發(fā)8. 新入手layuiadmin,部署到tp中。想用php自已寫一個(gè)后臺管理系統(tǒng)。9. javascript - react 組件 使用super()報(bào)錯(cuò)10. javascript - es6擴(kuò)展運(yùn)算符...的問題
