【问题标题】:Dynamically generate package name for multi-flavors configuration为多口味配置动态生成包名
【发布时间】:2014-06-19 09:43:03
【问题描述】:

我有将用于多个客户的 Gradle Android 项目。它还将有免费和付费版本。我意识到可以通过使用 flavorDimensions 来实现。但问题是我想有一种方法来根据选择的口味生成包名。

flavorDimensions 'branding', 'version'
productFlavors {
    free {
        flavorDimension 'version'
    }
    paid{
        flavorDimension 'version'
    }
    customer1 {
        flavorDimension 'branding'
    }
    customer2 {
        flavorDimension 'branding'
    }
}

// pseudocode
def getGeneratePackageName() {
    if (customer1 && free) {
        return 'com.customer1.free'
    }
    if (customer2 && free) {
        return 'com.customer2.free'
    }
    if (customer1 && paid) {
        return 'com.customer1.paid'
    }
    if (customer2 && paid) {
        return 'com.customer2.paid'
    }
}

不知道什么时候需要调用这个方法,需要设置什么变量?

【问题讨论】:

    标签: android gradle android-build package-name


    【解决方案1】:

    想出了如何实现这一点。下面的 Groovy 代码可以灵活地生成包名。

    buildTypes {
        applicationVariants.all { variant ->
    
            def projectFlavorNames = []
    
            variant.productFlavors.each() { flavor ->
                projectFlavorNames.add(flavor.name)
            }
    
            project.logger.debug('Application variant ' + variant.name + '. Flavor names list: ' + projectFlavorNames)
    
            if (projectFlavorNames.contains('customer1') && projectFlavorNames.contains('variant1')) {
                variant.mergedFlavor.packageName = 'com.customer1.variant1'
            } else if (projectFlavorNames.contains('customer2') && projectFlavorNames.contains('variant2')) {
                variant.mergedFlavor.packageName = 'com.customer2.variant2'
            } // else use standard package name
    
            project.logger.debug('Using project name: ' + variant.packageName)
        }
    
        // ...
    
    }
    

    【讨论】:

    • 注意:这已经稍微改变了。而不是 'variant.mergedFlavor.packageName' 你现在需要 'variant.mergedFlavor.applicationId'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-24
    • 2012-07-07
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    相关资源
    最近更新 更多