如何在新gradle中配置产品风味

时间:2018-01-05 16:13:21

标签: android android-studio gradle android-productflavors

我正在配置我的应用程序的付费和免费版本,我得到以下错误。我已经在android 3之前配置相同而没有问题。

如何修理它? enter image description here

Gradle脚本

apply plugin: 'com.android.application'

android {
    compileSdkVersion 26
    defaultConfig {
        applicationId "capstone.nanodegree.udacity.com.mypodcast"
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        targetCompatibility 1.8
        sourceCompatibility 1.8
    }

    //flavorDimensions "default"
    flavorDimensions "free", "paid"

    productFlavors {
        free {
            applicationId "capstone.nanodegree.udacity.com.mypodcast.free"
            dimension "free"
        }

        paid {
            applicationId "capstone.nanodegree.udacity.com.mypodcast.paid"
            dimension "paid"
        }
    }
}
def AAVersion = '4.4.0'
def GLIDEVersion = '4.3.1'
def supportVersion = '26.1.0'

2 个答案:

答案 0 :(得分:0)

检查google-services.json .....中的两个包的条目,也可能是单独的问题,我相信你应该只定义一个维度(你的口味都会具有相同的dimension值)

答案 1 :(得分:0)

我正在使用和你一样的Flavors,我将删除我的两种口味并重命名以进行简单比较:

compileSdkVersion 26
    buildToolsVersion googleBuildTools

    dataBinding {
        enabled = true
    }

    defaultConfig {
        applicationId "com.myapp"
        minSdkVersion 21
        targetSdkVersion 26
        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true
    }
   signingConfigs {
        releaseMyApp {
            storeFile file("$projectDir/../myappkeystore.jks")
            storePassword System.getenv('MYAPP_STORE_PASSWORD')
            keyAlias System.getenv('MYAPP_KEY_ALIAS')
            keyPassword System.getenv('MYAPP_KEY_PASSWORD')
        }
    }

productFlavors {
    myapp {
        applicationId "com.myApp.one"
        buildConfigField "String", "SERVER_URL", '"https://api.myappone.com"'
        versionCode 24
        versionName "1.18"
        minSdkVersion 21
    }
    myappStaging {
        applicationId "com.myapp.one.staging"
        buildConfigField "String", "SERVER_URL", '"https://stg.api.myappone.com"'
        versionCode 24
        versionName "1.18"
        minSdkVersion 21
    }
}

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        productFlavors.myapp.signingConfig signingConfigs.releaseMyapp
        productFlavors.myappStaging.signingConfig signingConfigs.releaseMyapp
    }
}

没有问题,但我会发布以防你有什么不同的事情,你注意到我没有,但你的错误可能与你的firebase json有关。您可以为所有风格使用相同的json文件,只需要每个应用程序标识符的客户端部分。您可以通过firebase门户网站在线创建。

我犯了错误,为每种口味制作单独的firebase json文件,后来发现我不需要这样做,因为它们都与它们中的所有客户都相同。

最初我只使用两种不同应用程序类型的flavor,但后来不得不为staging制作口味以支持多种环境中的PUSH。祝好运。希望这有帮助,但我猜你需要修复你的firebase json文件。