繁体   English   中英

如何在 build.gradle 的 buildType 中获得风味?

[英]How to get flavor in buildType of build.gradle?

我有我的 gradle 文件,如下所示,我在调试版本中将我的应用程序签名为调试,并在发布版本中发布。 它有两种口味,即开发和生产。

buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }
}

productFlavors {
    develop {
        // Do something
    }
    production {
        // Do something
    }
}

但是,我也在考虑以 Debug for Develop 风格(发布)的身份签名。 我怎么能做到这一点(即访问 buildType 中的风味类型变量)?

据我了解你的问题,你想要这样的东西:

developDebug: signingConfigs.debug
productionDebug: signingConfigs.debug
developRelease: signingConfigs.debug
productionRelease: signingConfigs.release

您可以通过以下方式实现:

android {
  productFlavors {
    develop {
        // Do something
    }
    production {
        // Do something
    }
  }
  buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    // Make an unfinished release build type
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    // Finish the release build type flavor specific
    def runTasks = gradle.startParameter.taskNames.toString().toLowerCase()
    if (runTasks.contains("develop")) {
      release {
        signingConfig signingConfigs.debug
      }
    } else if (runTasks.contains("production")) {
      release {
        signingConfig signingConfigs.release
      }
    }
  }
}

编辑:我认为这可能是一个更清洁的解决方案

buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        signingConfig signingConfigs.release
    }
    release-develop {
        initWith buildTypes.release
        signingConfig signingConfigs.debug
    }
}

您还可以使用:

productFlavors.develop.signingConfig signingConfigs.debug

在您的发布版本类型中。

原答案:

像这样的事情应该可以解决问题。

层次结构是 buildTypes -> defaultConfig -> productFlavors

buildTypes {
    debug {
        signingConfig signingConfigs.debug
    }
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

defaultConfig {
    signingConfig signingConfigs.release
}

productFlavors {
    develop {
        signingConfig signingConfigs.debug
        // Do something
    }
    production {
        // Do something
    }
}
  • 开发调试:使用调试变体中的调试密钥签名
  • developRelease :使用开发风格中的调试密钥签名
  • productionDebug :使用来自调试变体的调试密钥签名
  • productionRelease :使用 defaultConfig 的发布密钥签名,因为它没有在发布变体中定义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM