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. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問(wèn)題2. 關(guān)于docker下的nginx壓力測(cè)試3. docker - 如何修改運(yùn)行中容器的配置4. angular.js - angularjs的自定義過(guò)濾器如何給文字加顏色?5. docker鏡像push報(bào)錯(cuò)6. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””7. java - 如何點(diǎn)擊按鈕,重新運(yùn)行(我是初學(xué)者)?8. 前端 - @media query 使用出現(xiàn)的問(wèn)題?9. html5和Flash對(duì)抗是什么情況?10. html - css氣泡,實(shí)現(xiàn)“倒三角(不知道算不算三角了)”可透明的。

網(wǎng)公網(wǎng)安備