Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android构建类型中设置不同的版本号?_Android_Gradle_Android Gradle Plugin - Fatal编程技术网

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

如何在android构建类型中设置不同的版本号?,android,gradle,android-gradle-plugin,Android,Gradle,Android Gradle Plugin,我需要设置两种不同的android构建类型,即staging和release defaultConfig { applicationId "com.app.testing" minSdkVersion 19 targetSdkVersion 23 versionCode 1 versionName "1.0" } release { minifyEnabled false prog

我需要设置两种不同的android构建类型,即
staging
release

 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:

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
   }
}
您可以在默认配置下定义它。您可以从构建变体进行更改。您可以将构建类型与风格相结合


祝你好运。

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

 defaultConfig {
    applicationId "com.app.testing"
    minSdkVersion 19
    targetSdkVersion 23
    versionCode 3.2.1
    versionName "1.0"
}
在上面的示例中,3表示一个主要版本,该版本将彻底更新应用程序的外观或功能。2表示以某种方式更新应用程序的错误修复/改进,而1表示较小的更新或修复


希望这能有所帮助。

您也可以为每个构建类型使用不同的版本名,而无需使用风格

在应用程序模块build.gradle中:

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

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

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


  }
versionName”“成功了

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

定义构建类型

正如上面的问题一样,您已经正确定义了两种构建类型,“release”和“dev”

现在我想为每个构建类型添加versionName。我该怎么做

迭代构建类型

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

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"
         }
      }
   }
}

versionName
为每种口味。buildTypes具有
versionNameSuffix
,正如您可以想象的那样,它为
versionName
添加了一个后缀。它是否适合您的需要?可能是@Blackbelt的重复,这给我带来了一个错误:
错误:(39,0)ProductFlavor名称不能与BuildType名称冲突
。我在编辑部分定义了产品风格,实际上我们对不同的东西使用产品风格,比如“产品的付费版本”或“产品的免费版本”。另外,如果包装因产品口味不同而不同,我想你误解了我的问题。我想为所有
构建类型定义
versionnumber
,这是在将应用程序上载到google play时定义的。当您上传新版本的时,google play上的开发者控制台将从gradle文件中的版本代码中获取应用程序的版本号。它不允许您上载具有相同版本代码的应用程序。版本代码必须是增量的。这不会覆盖BuildConfig.java中版本名称的值。相反,is=t生成两个名为VERSION\u name的变量。VERSION_NAME=-1(即使我们没有指定,也作为默认值)VERSION_NAME=“3.2.1”(示例值)问题出现,因为在同一个类中有两个同名的变量。我希望这是一个有效的解决方案,但它给了我错误:
任务执行失败:app:processDebugManifest.
它可能应该是
debug
而不是
dev
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"
         }
      }
   }
}