android - 不同 flavor 维度如何设置signingConfig?

标签 android android-gradle-plugin

我想弄清楚如何为生成的各个 flavor 维度指定 signingConfig。我已经看到了在使用不同 flavor 但不使用 flavor 维度时如何做到这一点。

我目前正在为不同的 flavor 维度成功应用不同的包名称,我想也许可以使用 signingConfig 来完成类似的事情?

> android.applicationVariants.all { variant ->
>     def flavorString = variant.getVariantData().getVariantConfiguration().getFlavorName()
>     def mergedFlavour = variant.getVariantData().getVariantConfiguration().getMergedFlavor();
> 
>     if(flavorString.equalsIgnoreCase("amazonFree")) {
>         mergedFlavour.setApplicationId("com.test.amazon.free")
>     }
>     if(flavorString.equalsIgnoreCase("amazonPro")) {
>         mergedFlavour.setApplicationId("com.test.amazon.pro")
>     }
>     if(flavorString.equalsIgnoreCase("googleFree")) {
>         mergedFlavour.setApplicationId("com.test.google.free")
>     }
>     if(flavorString.equalsIgnoreCase("googlePro")) {
>         mergedFlavour.setApplicationId("com.test.google.pro")
>     } }

我的口味设置

// Special flavor dimensions for different markets and
// versions paid and free.
flavorDimensions 'market', 'version'

productFlavors {
    amazon {
        flavorDimension 'market'
    }
    google {
        flavorDimension 'market'
    }
    // Base free version
    free {
        flavorDimension 'version'
        // Need this cause of all the ad libraries we are using :/
        defaultConfig.multiDexEnabled true

        // For now we sign all free versions with this config
        // cause we have no idea how to sign the individual flavor dimensions.
        signingConfig signingConfigs.googleFree
    }
    // Base pro version
    pro {
        flavorDimension 'version'

        // For now we sign all free versions with this config
        // cause we have no idea how to sign the individual flavor dimensions.
        signingConfig signingConfigs.googlePro
    }
}

最佳答案

首先,applicationId 可以应用在 productFlavors block 本身:

productFlavors {
    amazonFree {
        applicationId 'com.test.amazon.free'
    }
    amazonPro {
        applicationId 'com.test.amazon.pro'
    }
    googleFree {
        applicationId 'com.test.google.free'
    }
    googlePro {
        applicationId 'com.test.google.pro'
    }
}

签名配置可以按照相同的方式配置:

productFlavors {
    amazonFree {
        applicationId 'com.test.amazon.free'
        signingConfig  signingConfigs.amazonFree
    }
    amazonPro {
        applicationId 'com.test.amazon.pro'
        signingConfig  signingConfigs.amazonPro
    }
    googleFree {
        applicationId 'com.test.google.free'
        signingConfig  signingConfigs.googleFree
    }
    googlePro {
        applicationId 'com.test.google.pro'
        signingConfig  signingConfigs.googlePro
    }
}

关于android - 不同 flavor 维度如何设置signingConfig?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29438985/

相关文章:

android - 如何更改系统导航栏颜色

Android Studio 更新再次破坏 Gradle

android -\build\intermediates\res\resources-anzhi-debug-stripped.ap _' specified for property ' resourceFile' 不存在

java - 9-patch 图像 : Some file crunching failed, 上的错误,请参阅日志了解详细信息

android - 使用 android gradle 插件时在 packageApplication 之后运行任务

android - 如何在 libgdx 中获取旋转物体的碰撞检测

javascript - 如何使用 React Native 检测 Android 手机中的电话?

java - 找不到符号构造函数ArrayAdapter(android.content.Context,int,java.lang.String[])

android - 有没有办法让广播组水平布局?

Android studio gradle,错误: Cause: error=2, No such file or directory