2013-01-14 29 views
4

我想通過實現一個配置參數來確定應用程序是以'DEV'模式還是'PROD'模式運行,從而使開發更容易。Android:在dev/prod環境中運行應用程序?

我想這個參數是從任何文件(基於該參數的代碼不同塊將被執行)訪問。

什麼是存儲此參數(這是無法訪問或改變的用戶)最實際的方法是什麼?

我怎樣才能訪問它從應用程序中?

+0

這是自動被Android工具現在完成了。詳情請參閱我的回答。 –

回答

5

與ADT 17(IIRC)起,你作爲汽車的一部分生成BuildConfig類自動擁有此。

開發時,DEBUG字段始終爲true,但是當您導出已簽名或未簽名的apk時,它將設置爲false。你可以使用它作爲:

if(BuildConfig.DEBUG) { 
    //Debug mode 
} 

或者周圍的其他方式:

if(!BuildConfig.DEBUG) { 
    //Release mode 
} 
+0

我想你錯過了「!」在你的第二個例子中? – Tool

+0

@Tool啊是的!我的錯。我現在修好了。謝謝 –

4

您可以使用枚舉:

public enum BuildType { 

    Release, Pilot, Debug; 
} 

並將其分配給一個全局變量:

public static final BuildType BUILD_TYPE = BuildType.Debug; 

你甚至可以創建在枚舉,讓您 切換非常具體的一些方法部分應用程序。在活動的一個

if (MyApplication.BUILD_TYPE != BuildType.Release) { 
    // some code that does not go in the release 
} 
+0

我應該把它放到一個單獨的課程中,以便以後可以擴展嗎?並分離邏輯? – Tool

+0

我們有一個擴展應用程序的類,我們確實把它放在那裏。 – Frank

1

靜態字段:

現在你可以做這樣的東西?或者我錯過了什麼?

public static boolean isDev = true; 

您可以在主要活動的onCreate中設置它。

+0

此參數是否可用於不同的活動?我將不得不使用MainActivity.isDev,對嗎? – Tool

+0

只要它是靜態的,你總是可以參考字段'MyActivity.isDev'。沒關係的事實,活動正在運行或不 – ben75

0

您可以創建一個新的類,並添加您的變量存在。 您也可以添加一些方法,這些方法將在開發模式下顯示關於您的應用程序的一些細節。

public class Console{ 
    public final static boolean isDev = true; 
    public static error(String tag, String msg){ 
    if(isDev){ 
     Log.e(TAG, msg); 
    } 
    } 
} 
相關問題