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. MYSQL 根據兩個字段值查詢 但兩個值的位置可能是互換的,這個怎么查?2. 求救一下,用新版的phpstudy,數據庫過段時間會消失是什么情況?3. mysql replace 死鎖4. mysql - C#連接數據庫時一直這一句出問題int i = cmd.ExecuteNonQuery();5. javascript - 微信網頁開發從菜單進入頁面后,按返回鍵沒有關閉瀏覽器而是刷新當前頁面,求解決?6. extra沒有加載出來7. android - 安卓做前端,PHP做后臺服務器 有什么需要注意的?8. python - 數據與循環次數對應不上9. php傳對應的id值為什么傳不了啊有木有大神會的看我下方截圖10. mysql - ubuntu開啟3306端口失敗,有什么辦法可以解決?
