2017-01-05 30 views
2

在Android Studio中我創建兩種配置:如何確定Android中選擇的「配置」?

enter image description here

如何確定在代碼我選擇了哪個配置?

我知道有在/app/build.gradlebuildConfigFieldbuildTypes的名稱不對應configuration的名字,所以我不知道怎麼做,所有的結合在一起。

android { 
    ... 

    defaultConfig { 
     ... 
    } 
    buildTypes { 
     debug { 
      ... 
      buildConfigField 'boolean', 'DEBUG', 'true' 
     } 
     release { 
      ... 
     } 
    } 
} 

我認爲Android Studio中一configuration對應於Xcode中schemabuildConfigField對應於Xcode中Environment Variable(我來自iOS的世界未來)。

+1

「我怎樣才能在代碼中確定我選擇的配置?」 - 一般來說,你沒有。運行配置是一個IDE的東西,而不是Android的東西。如果我不得不猜測,你正在使用構建變體(例如「這是調試」還是「釋放」?)來混合運行配置(「我在此IDE中執行哪些代碼或測試?」)。後者通過Build Variants窗口控制,默認停靠在Android Studio窗口的左下角。 – CommonsWare

+0

@CommonsWare我看到了,我想要的是定義我可以在代碼中使用的環境變量值,例如,在調試構建變體中,我想連接到開發數據庫,​​在發佈構建變體中,我想連接到生產數據庫。 – Manuel

+2

您是否閱讀過Android文檔中的[Configure Build Variants](https://developer.android.com/studio/build/build-variants.html)?它描述瞭如何使用風味,這是在生產環境和開發環境之間切換的常用方式。 – Robert

回答

1

如何在代碼中確定我選擇的配置?

只要運行配置是IDE的東西,不是Android的東西。

我想要的是定義我可以在代碼中使用的環境變量值,例如,在我想連接到開發數據庫的調試版本中,我想連接到生產數據庫

這些與運行配置無關。運行配置是什麼配置要運行:

  • 主要app
  • 試驗的主要app
  • 測試的something
  • 等。

debugrelease是構建類型,構建變體的一個維度。您可以通過Build Variants工具選擇運行配置使用的構建變體,默認停靠在Android Studio IDE窗口的左下角。

有不同的代碼的行爲基於debugrelease,您可以:

  • 檢查BuildConfig.BUILD_TYPE,這將是要麼debugrelease

  • 使用buildConfigField注入值到BuildConfig從搖籃,基於建立類型和/或產品風味

  • 使用resConfig注入值轉化爲資源,如字符串資源每個構建類型

  • 使用自定義源集(例如,src/main/爲常見的代碼,src/debug/特定調試代碼,src/release/爲特定版本的代碼)

1

您可以配置不同的資源集。默認情況下,maindebug已經存在。要在運行時確定哪個集合用於構建apk,請在每個資源集中創建一個新的資源文件,例如

app/src/main/res/values/resourceset.xmlapp/src/debug/res/values/resourceset.xml

,並把一個字符串或整數值裏面是這樣的:

<resources> 
    <string name="resource_set">debug</string> 
</resources> 

<resources> 
    <string name="resource_set">main</string> 
</resources> 

然後您可以使用getString()以獲取價值R.string.resource_set,您可以檢測到哪個資源集被使用。

我使用這種技術根據使用的資源集合(包括使用Google API進行調試和使用其他指紋進行調試然後進行調試)包含不同的Google API客戶端ID。

相關問題