【问题标题】:Android Studio does not show all build variantsAndroid Studio 未显示所有构建变体
【发布时间】:2018-08-05 05:50:50
【问题描述】:

下面是我的 build.gradle 的 buildTypesflavors 部分:

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

flavorDimensions "default"
productFlavors {
    free {
        android.sourceSets.free.setRoot('src/main')
        dimension "default"
    }
    plus {
        applicationIdSuffix '.plus'
        versionName '1.0'
        android.sourceSets.plus.setRoot('src/plus')
        dimension "default"
    }
}

Android Studio 在构建变体窗口中仅显示两个构建变体(freeDebugfreeRelease)。它不显示plusDebugplusRelease。我有另一个具有类似 build.gradle 的项目,我可以清楚地看到四个构建变体。有什么我应该看的想法吗?

【问题讨论】:

    标签: android android-studio gradle build.gradle android-productflavors


    【解决方案1】:

    plus 是 groovy 中的默认方法。这不是 Android Studio 或其他任何东西中的错误。你在DefaultGroovyMethods中执行这个函数

    public static <T> Set<T> plus(Set<T> left, T right) {
        return (Set)plus((Collection)left, (Object)right);
    }
    

    这是因为传递给productFlavors 的委托实现了Set

    productFlavors definition

    【讨论】:

    • 当我尝试引用它时——"plus"——我得到了与plus相同的结果。 Groovy 是否将字符串文字视为方法名称?
    【解决方案2】:

    这似乎是 Gradle 中的错误/限制。我已经为它提交了an issue

    使用除plus 之外的其他内容。我尝试引用它("plus"),认为它可能与关键字冲突,但没有效果。但是Plusplussssphat 都可以。

    【讨论】:

    • 谢谢!您原来的评论确实有帮助,而且是正确的(不使用“加号”),但原因是错误的。
    • 他们至少应该对“加号”一词提出警告。这是一个非常常见的词,用于版本,我自己正在尝试使用它并且不知道发生了什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多