2016-03-07 82 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 
     } 
    } 
相关问题