android-studio - Android Studio 中有沒有類似C#的#if DEBUG功能
問題描述
VisualStudio中如果當前模式為DEBUG,那么我在代碼中可以在#if DEBUG中執行一些代碼,比如Debug模式中訪問的API為www.aaa.com。而正式發布release時API是www.bbb.com,這在vs中是可以。不知道Android Studio中有沒有類似的功能。
問題解答
回答1:Android Studio 會自動添加 BuildConfig 類,這個類有一個字段叫 DEBUG,它的值根據當前的編譯方式自動生成,編譯方式為 debug 時值為 true,release 時值為 false。所以可以根據這個特點在函數中添加 if (BuildConfig.DEBUG) 類來實現類似的功能,一個比較常見的例子是自定義 Log 類,使得在 debug 時輸出 log,release 時不輸出:
public void d(String tag, String message) { if (BuildConfig.DEBUG) {Log.d(tag, message); }}回答2:
沒有,Java不支持宏定義,所有的調試信息都會進入編譯結果。你只能在程序中設置變量讓調試程序在生產環境中不執行。Android Manifest中有版本信息,默認會生產Debug和Release兩種版本,你可以通過程序判斷來實現切換參數。
回答3:AS的調試過程中可以動態設置變量值~
回答4:這個功能很雞肋,明明可以自己寫代碼實現的(不超過3行代碼就能搞定),非要android原生去實現,如你所愿的話安卓開發將會更加復雜,我們需要記住更多雞肋功能了(得不償失)
回答5:可以利用BuildConfig來實現
回答6:可以,借助gradle配置:變量、版本信息
回答7:看看android studio的debug技巧,http://weishu.me/2015/12/21/a...,不要太牛逼
相關文章:
1. html5 - css3scale和rotate同時使用轉換成matrix寫法該如何轉換?2. win10 python3.5 matplotlib使用報錯3. php多任務倒計時求助4. css - 如何把一個視圖放在左浮動定位的視圖的上面?5. javascript - jquery怎么讓a標簽跳轉后保持tab的樣式6. MySQL的聯合查詢[union]有什么實際的用處7. javascript - vue組件的重復調用8. javascript - 小demo:請教怎么做出類似于水滴不斷擴張的效果?9. python的正則怎么同時匹配兩個不同結果?10. javascript - axios請求回來的數據組件無法進行綁定渲染
