2016-03-07 79 views
1

我正在編寫對REST風格的Web服務進行調用的代碼的測試。我需要使用不同的變量進行測試,分期和製作。對於一個示例暫存版本url可以是'myapp.staging.com',而當我測試分段風格時,它應該是'localhost/27015'。生產風味同樣如此。當它是發行版時,它應該是'myapp.production.com'。我如何實現這些風格,buildType組合?使用不同的來源進行測試併發布Android Studio

+0

到目前爲止您嘗試過什麼? – Amy

+0

@Amy我知道我可以使用buildConfigField來存儲變量。但是這種方法不允許我爲不同的風味和構建類型使用不同的值。對於示例版本,構建類型將始終指向單個url(無論風格是分段還是實時)。我希望這些網址能夠根據buildType以及風格而有所不同。 – Lilylakshi

回答

1

您可以使用BuildType和flavor來實現它。

如果你想爲不同的組合使用不同的url,你可以在你的資源中使用一個值。

使用flavor1,flavor2你有4 Build Variants
您可以在資源中設置url,例如在strings.xml文件中。
然後你可以在這些文件夾中設置不同的文件來實現你想要的。

src/flavor1/ 
src/flavor1Debug/ 
src/flavor1Release/ 
src/flavor2/ 
src/flavor2Debug/ 
src/flavor2Release/ 

您可以設置所有其他值,例如applicationId,在build.gradle文件。

1

沒錯這就是可能使用gradle這個文件中productFlavours,所以每個構建變量將有它自己的

  • 應用程序圖標
  • 應用程序名稱
  • 常數(基本API URL)

Try This

希望這適用於你。

0

這是我們正在做...這是我們的應用程序生成文件。

defaultConfig { 
     applicationId 'com.XXXX.XXXXfyd' 
     minSdkVersion 17 
     targetSdkVersion 23 
     versionCode 55 
     versionName "1.0.0" 

     multiDexEnabled true 

     buildConfigField "boolean", "OTP_ENABLED", "false"; 
     buildConfigField "boolean", "MINT_API_ENABLED", "false"; 
     buildConfigField "String", "MINT_API_KEY", "\"XXCVVF\""; 

     resValue "string", "app_name", "XXXXfyd Debug" 
     resValue "string", "account_name", "XXXXfyd Debug" 
     resValue "string", "account_type", "com.XXXX.XXXXfyd.debug" 
     resValue "string", "account_authority", "com.mind.eventifyd.debug.provider" 

     buildConfigField "String", "ACCOUNT_NAME", "\"XXXXfyd Debug\"" 
     buildConfigField "String", "ACCOUNT_TYPE", "\"com.XXXX.XXXXfyd.debug\"" 
     buildConfigField "String", "ACCOUNT_AUTHORITY", "\"com.XXXX.XXXXfyd.debug.provider\"" 

     buildConfigField "String", "XXXXXFYD_XXXXX_URI", "\"http://XXX.XXX.XX.XX\""; 
     buildConfigField "String", "XXXXFYD_XXXX_URI", "\"XXXX//[email protected]:XXXXX\"" 
    } 
buildTypes { 
     release { 
      /* zipAlignEnabled true 
      minifyEnabled true*/ 
      shrinkResources false 
      debuggable false 
      /* proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'*/ 
      signingConfig signingConfigs.release 

      versionNameSuffix "-build." + getDate() 

      resValue "string", "app_name", "XXXXXfyd" 
      buildConfigField "boolean", "OTP_ENABLED", "false"; 
      buildConfigField "boolean", "MINT_API_ENABLED", "true"; 
      buildConfigField "String", "MINT_API_KEY", "\"efrtgyhu\""; 

      resValue "string", "account_name", "XXXXXfyd" 
      resValue "string", "account_type", "com.XXXX.XXXXfyd" 
      resValue "string", "account_authority", "com.XXXX.XXXXfyd.provider" 

      buildConfigField "String", "ACCOUNT_NAME", "\"XXXXifyd\"" 
      buildConfigField "String", "ACCOUNT_TYPE", "\"com.XXXX.XXXXifyd\"" 
      buildConfigField "String", "ACCOUNT_AUTHORITY", "\"com.XXXX.XXXXfyd.provider\"" 

      buildConfigField "String", "XXXFYD_XXXX_URI", "\"https://com.XXXX.XXXXfyd.XXXXXes.com\""; 
      buildConfigField "String", XXXXXFYD_XXXX_URI", "\"XXXX://[email protected]:XXXX\"" 
     } 
     debug { 
      /* zipAlignEnabled true 
      minifyEnabled false*/ 
      debuggable true 
      applicationIdSuffix ".debug" 
      signingConfig signingConfigs.debug 
      versionNameSuffix "-debug-build." + getDate() 
     } 
    } 

    productFlavors { 
     dev { 
      minSdkVersion 19 
     } 
     prod { 
      minSdkVersion 17 
     } 
    } 
相關問題