3

在 Android Studio (v2.2) 中同步成绩文件时出现以下错误日志:

Error:(184, 0) Could not get unknown property 'freeAppDev' for ProductFlavor container.


背景:

我有一个适用于 3 个开发环境(例如 dev、uat 和 production)的 2 个版本的应用程序(例如 freeApp 和paidApp)。我这样设置我的 app.gradle 文件:

flavorDimensions "ver", "env"

productFlavors {
    freeApp {
        dimension "ver"
        ...
    }
    paidApp {
        dimension "ver"
        ...
    }

    dev {
        dimension "env"
        ...
    }
    uat {
        dimension "env"
        ...
    }
    production {
        dimension "env"
        ...
    }
}

对于 buildTypes,我创建了一个自定义的调试类型“alpha”,这样我就可以为自己的目的设置signingConfig:

buildTypes {
    alpha {
        productFlavors.freeAppDev.signingConfig signingConfigs.custom1DebugKey
        productFlavors.freeAppUat.signingConfig signingConfigs.custom2DebugKey
        productFlavors.freeAppProduction.signingConfig signingConfigs.customReleaseKey

        productFlavors.paidAppDev.signingConfig signingConfigs.custom1DebugKey
        productFlavors.paidAppUat.signingConfig signingConfigs.custom2DebugKey
        productFlavors.paidAppProduction.signingConfig signingConfigs.customReleaseKey
    }
    ...
}

custom1DebugKey、custom2DebugKey、customReleaseKey 是正在签名的配置,这不是重点,所以我只是跳过粘贴代码。

我想问一下当productFlavors中有多个维度时,如何在“productFlavors.XXX.signingConfig”中获得正确的XXX名称。谢谢。


PS有关更多信息,它可以通过像这样修改gradle文件来完美地为我工作:

productFlavors {
    freeAppDev {
        ...
    }
    freeAppUat {
        ...
    }
    freeAppProduction {
        ...
    }

    paidAppDev {
        ...
    }
    paidAppUat {
        ...
    }
    paidAppProduction {
        ...
    }
}


buildTypes {
    alpha {
        productFlavors.freeAppDev.signingConfig signingConfigs.custom1DebugKey
        productFlavors.freeAppUat.signingConfig signingConfigs.custom2DebugKey
        productFlavors.freeAppProduction.signingConfig signingConfigs.customReleaseKey

        productFlavors.paidAppDev.signingConfig signingConfigs.custom1DebugKey
        productFlavors.paidAppUat.signingConfig signingConfigs.custom2DebugKey
        productFlavors.paidAppProduction.signingConfig signingConfigs.customReleaseKey
    }
    ...
}
4

1 回答 1

0

因此,您似乎仅根据环境分配签名密钥:

productFlavors.freeAppDev.signingConfig signingConfigs.custom1DebugKey
productFlavors.freeAppUat.signingConfig signingConfigs.custom2DebugKey
productFlavors.freeAppProduction.signingConfig signingConfigs.customReleaseKey

productFlavors.paidAppDev.signingConfig signingConfigs.custom1DebugKey
productFlavors.paidAppUat.signingConfig signingConfigs.custom2DebugKey
productFlavors.paidAppProduction.signingConfig signingConfigs.customReleaseKey

如果是这种情况,您可以使用它:

productFlavors.dev.signingConfig signingConfigs.custom1DebugKey
productFlavors.uat.signingConfig signingConfigs.custom2DebugKey
productFlavors.production.signingConfig signingConfigs.customReleaseKey

请注意,这productFlavors将包含每种产品风格(在您的情况下:freeApp、paidApp、dev、uat、production),但不会像您尝试使用它们那样根据维度组合它们。

于 2018-05-20T15:13:05.430 回答