android - 使用 gradle 签署产品 flavor

我很想将我的项目迁移到 gradle。我的一个项目有多种产品风格,每个产品都必须在其发布版本中使用不同的 signingConfig 进行签名。所以这是我到目前为止所尝试的:

buildscript {
    ...
}

apply plugin: 'android'

android {
    compileSdkVersion 17
    buildToolsVersion '17'

    signingConfigs {
        flavor1 {
            storeFile file("keystore")
            storePassword "secret"
            keyAlias "aliasForFlavor1"
            keyPassword "secretFlavor1"
        }

        flavor2 {
            storeFile file("keystore")
            storePassword "secret"
            keyAlias "aliasForFlavor2"
            keyPassword "secretFlavor2"
        }
    }

    productFlavors {
        flavor1 {
            signingConfig signingConfigs.flavor1
        }

        flavor1 {
            signingConfig signingConfigs.flavor2
        }
    }
}

dependencies {
    ...
}

当我运行 gradle build 时,我得到一个 groovy.lang.MissingFieldException 和以下错误消息:

No such field: signingConfigs for class: com.android.build.gradle.internal.dsl.GroupableProductFlavorFactory

所以我假设 Gradle 脚本的 productFlavors.* 部分不是放置代码签名配置的正确位置。

最佳答案

您可以在 buildType 中为每个 flavor 声明 signing config。这是我的 gradle 文件,用于使用不同的 keystore 发布签名风格。

android {
  signingConfigs {
    configFirst {
        keyAlias 'alias'
        keyPassword 'password'
        storeFile file('first.keystore')
        storePassword 'password'
    }

    configSecond {
        keyAlias 'alias'
        keyPassword 'password'
        storeFile file('second.keystore')
        storePassword 'password'
    }
  }

  compileSdkVersion 23
  buildToolsVersion "23.0.2"
  defaultConfig {
        minSdkVersion 14
        targetSdkVersion 23
  }

  productFlavors{
    flavor1 {
        applicationId "com.test.firstapp"
    }

    flavor2 {
        applicationId "com.test.secondapp"
    }
  }

  buildTypes {
    release {
        productFlavors.flavor1.signingConfig signingConfigs.configFirst
        productFlavors.flavor2.signingConfig signingConfigs.configSecond           

        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'),
                'proguard-rules.pro'

    }
  }
}

buildTypes block 应该放在 productFlavors block 之后,我的意思是顺序很重要。

https://stackoverflow.com/questions/17040494/

相关文章:

visual-studio - VS2005 : Assembly '' is

Ant 到 Maven - 多个构建目标

javascript - 用于版本控制和缩小 javascript 的 Maven 插件

ios - Swift 框架不适用于命名为 'Debug' 或 'Release' : No suc

c++ - 从父 CMakeLists.txt 覆盖 CMake 中的默认选项(...)值

build - CMakeLists.txt 中未使用 CMAKE_BUILD_TYPE

javascript - 我可以使用 webpack 分别生成 CSS 和 JS 吗?

visual-studio - Visual Studio 在构建期间不断挂起

c# - 自动在 Visual Studio c# 项目中嵌入 mercurial 修订信息

java - Eclipse 无法删除错误