首页 文章

Android Studio 3.0 Flavor Dimension问题

提问于
浏览
192

升级到Studio Canary构建 . 我之前的Telegram Messenger项目给出了以下错误 .

错误:所有风味现在必须属于命名风味维度 . 风味'armv7'未分配给风味维度 . 有关详细信息,请访问https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

我该怎么办?我已经看过那个链接,但无法理解该怎么做 . 我现在有3个构建变体,发布,调试和foss .

5 回答

  • 8

    如果您不需要该机制,只需在 build.gradle 中指定随机风味维度:

    android { 
        ...
        flavorDimensions "default"
        ...
    }
    

    有关更多信息,请查看migration guide

  • 448

    经过仔细阅读和阅读后,我自己解决了 . 解决方案是在build.gradle中添加以下行 .

    flavorDimensions“versionCode”

    android { 
           compileSdkVersion 24
           .....
           flavorDimensions "versionCode"
    }
    
  • 54

    Here you can resolve this issue, you need to add flavorDimension with productFlavors's name and need to define dimension as well, see below example and for more information see here https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html

    flavorDimensions 'free','paid' //here defined dimensions
    productFlavors {
        production {
            dimension 'paid' //you just need to add this line
            ... // your existing code
    
        }
    
        demo {
            dimension 'free' //added here also
            ... // your existing code
    
        }
    
        development {
            dimension 'free' //add here too
            ... // your existing code
    
        }
    
  • 26

    如果您不想使用尺寸,则应使用此线

    android { 
    compileSdkVersion 24
    
    ...
    flavorDimensions "default"
    ...
    }
    

    但是如果您想要使用尺寸,则应首先声明尺寸名称,然后在此示例来自文档后使用此名称:

    android {
    ...
    buildTypes {
    debug {...}
    release {...}
    }
    
      // Specifies the flavor dimensions you want to use. The order in which you
      // list each dimension determines its priority, from highest to lowest,
      // when Gradle merges variant sources and configurations. You must assign
      // each product flavor you configure to one of the flavor dimensions.
      flavorDimensions "api", "mode"
    
      productFlavors {
        demo {
      // Assigns this product flavor to the "mode" flavor dimension.
      dimension "mode"
      ...
    }
    
    full {
      dimension "mode"
      ...
    }
    
    // Configurations in the "api" product flavors override those in "mode"
    // flavors and the defaultConfig block. Gradle determines the priority
    // between flavor dimensions based on the order in which they appear next
    // to the flavorDimensions property above--the first dimension has a higher
    // priority than the second, and so on.
    minApi24 {
      dimension "api"
      minSdkVersion 24
      // To ensure the target device receives the version of the app with
      // the highest compatible API level, assign version codes in increasing
      // value with API level. To learn more about assigning version codes to
      // support app updates and uploading to Google Play, read Multiple APK Support
      versionCode 30000 + android.defaultConfig.versionCode
      versionNameSuffix "-minApi24"
      ...
    }
    
    minApi23 {
      dimension "api"
      minSdkVersion 23
      versionCode 20000  + android.defaultConfig.versionCode
      versionNameSuffix "-minApi23"
      ...
    }
    
    minApi21 {
      dimension "api"
      minSdkVersion 21
      versionCode 10000  + android.defaultConfig.versionCode
      versionNameSuffix "-minApi21"
      ...
        }
      }
    }
    ...
    
  • 14

    我在build.gradle中使用了flavorDimensions作为我的应用程序(Module:app)

    flavorDimensions "tier"
    
    productFlavors {
        production {
            flavorDimensions "tier"
            //manifestPlaceholders = [appName: APP_NAME]
            //signingConfig signingConfigs.config
        }
        staging {
            flavorDimensions "tier"
            //manifestPlaceholders = [appName: APP_NAME_STAGING]
            //applicationIdSuffix ".staging"
            //versionNameSuffix "-staging"
            //signingConfig signingConfigs.config
        }
    }
    

    Check this link for more info

    // Specifies two flavor dimensions.
    flavorDimensions "tier", "minApi"
    
    productFlavors {
         free {
                // Assigns this product flavor to the "tier" flavor dimension. Specifying
                // this property is optional if you are using only one dimension.
                dimension "tier"
                ...
         }
    
         paid {
                dimension "tier"
                ...
         }
    
         minApi23 {
                dimension "minApi"
                ...
         }
    
         minApi18 {
                dimension "minApi"
                ...
         }
    }
    

相关问题