如何在android构建类型中设置不同的版本号?

时间:2016-02-16 08:38:49

标签: android gradle android-gradle

我需要设置两种不同的Android构建类型,即stagingrelease

 defaultConfig {
    applicationId "com.app.testing"
    minSdkVersion 19
    targetSdkVersion 23
    versionCode 1
    versionName "1.0"
}

release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        buildConfigField "String", "SERVER_URL", '"http://testing.com"'
        }

dev {
        applicationIdSuffix  ".dev"
        buildConfigField "String", "SERVER_URL", '"http://testing.com"'
    }

现在我想为每个构建类型添加versionName。我怎么能这样做?

修改

  productFlavors{
   release {
        versionname = "1.0"
   }

   dev{
       versionname = "1.0"
   }
}

4 个答案:

答案 0 :(得分:4)

您可以使用如下所示的productFlavors:

productFlavors
{
   test
   {
     applicationId 'com.example.test'
     versionName '1.0.0.test'
     versionCode 1
   }

   product
   {
     applicationId 'com.example.product'
     versionName '1.0.0.product'
     versionCode 1
   }
}

您可以在默认配置下定义它。您可以从构建变体进行更改。您可以将构建类型与风格组合在一起。

祝你好运。

答案 1 :(得分:0)

版本代码可以是次要版本,例如:

 defaultConfig {
    applicationId "com.app.testing"
    minSdkVersion 19
    targetSdkVersion 23
    versionCode 3.2.1
    versionName "1.0"
}

在上面的例子中,3表示一个主要版本,它大大更新了应用程序的外观或功能。 2表示错误修复/改进,以某种方式更新应用程序,而1表示次要更新或修复。

希望这有帮助。

答案 2 :(得分:0)

您还可以为每个构建类型使用不同的版本名称,而不使用 flavor

在app-module build.gradle中:

  defaultConfig {
      ...
      versionName ""
  }
      ...
  buildTypes {

      debug {
          ...
          versionNameSuffix 'debug-version-1'
          ...
      }

      release {
          ...
          versionNameSuffix 'version 1'
          ...
      }


  }

versionName"" 做了这个伎俩。

答案 3 :(得分:-1)

  

我需要设置两种不同的android构建类型,即staging和   释放。

定义buildTypes

如上所述,您已正确定义了两个buildTypes,“release”和“dev”。

  

现在我想为每个构建类型添加versionName。我怎么能这样做?

通过buildTypes迭代

为不同的buildType定义versionName(或任何其他defaultConfig参数)的一种简洁且更具编程性的方法是迭代所有应用程序变体并使用if语句对buildTypes执行特定操作:

android {
   ...
   defaultConfig {
      ...
      applicationVariants.all { variant ->
         if(variant.buildType.name == "release") {
            //Release
            versionName "1.2.3"
         } else if(variant.buildType.name == "dev") {
            //Dev
            versionName "3.2.1"
         }
      }
   }
}