2016-01-28 60 views
0

我在我的gradle文件中有这个构建配置?为什么我必须在gradle中签署qa味道?

buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' 
     } 
     debug { 
      applicationIdSuffix ".debug" 
      versionNameSuffix ".debug" 
     } 
     qa { 
      applicationIdSuffix ".qa" 
      versionNameSuffix ".qa" 
     } 
    } 
    sourceSets { debug { res.srcDirs = ['src/debug/res', 'src/debug/res/values'] } } 
} 

为什么当我尝试运行qa它trow我和没有这个味道的关键错误?

回答

1

由于Gradle的Android插件知道使用插件创建的调试签名密钥库,因此Gradle可以为其构建项目的开箱类型为debug。对于一切,你要么需要:

  • 配置一个单独的签名密钥库(例如,用于release

  • 初始化从debug构建类型的新建筑类型,类似于使用拷贝构造函数,所以它使用debug做同样的规则签署

在下面的示例,我要定义一个新的mezzanine生成类型,赋予其同签署的conf配置,我用于release。所以,我用mezzanine.initWith(buildTypes.release)成立mezzaninerelease副本,然后继续与不同的规则进行配置:

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 19 
    buildToolsVersion "21.1.2" 

    defaultConfig { 
     versionCode 2 
     versionName "1.1" 
     minSdkVersion 14 
     targetSdkVersion 18 
    } 

    signingConfigs { 
     release { 
      storeFile file('HelloConfig.keystore') 
      keyAlias 'HelloConfig' 
      storePassword 'laser.yams.heady.testy' 
      keyPassword 'fw.stabs.steady.wool' 
     } 
    } 

    buildTypes { 
     debug { 
      applicationIdSuffix ".d" 
      versionNameSuffix "-debug" 
     } 

     release { 
      signingConfig signingConfigs.release 
     } 

     mezzanine.initWith(buildTypes.release) 

     mezzanine { 
      applicationIdSuffix ".mezz" 
      debuggable true 
     } 
    } 
} 

在你的情况,你会使用类似qa.initWith(buildTypes.debug)配置qa构建类型的其余部分之前。

+0

我有一种感觉只有调试生成它自己的密钥,如果你没有要求其他明智的,我不能使用调试密钥为我的味道?我需要它为不同的包名称,以便我的手机上有两个版本。谢谢你的答案,非常详细和有帮助 –

+1

@JesusDimrix:“我不能使用调试密钥为我的味道?” - 根据你的问题,'qa'是一个构建类型。您可以使用我的答案中概述的'qa'的调试签名密钥。 – CommonsWare

+0

谢谢你的清晰和详细的答案。 –

相关问题