239 votes

Problème de dimension de saveur pour Android Studio 3.0

Mise à niveau de Studio Canaries construire. Mon précédent projet de Telegram Messenger est de donner suite à l'erreur.

Erreur:Toutes les saveurs doivent appartiennent désormais à un nommé saveur dimension. La saveur 'armv7" n'est pas assigné à une saveur dimension. Pour en savoir plus https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

Que dois-je faire? J'ai déjà vu ce lien mais je ne pouvais pas comprendre ce qu'il faut faire. J'ai 3 construire des variantes, de presse,de débogage et les logiciels libres.

566voto

tknell Points 691

Si vous n'avez pas vraiment besoin du mécanisme, spécifiez simplement une dimension de saveur aléatoire dans votre build.gradle :

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

Pour plus d'informations, consultez le guide de migration.

63voto

Omkar Nath Singh Points 1899

Après avoir essayé et lu attentivement, je l'ai résolu moi-même. La solution consiste à ajouter la ligne suivante dans build.gradle.

flavourDimensions "versionCode"

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

42voto

user3636561 Points 1

Ici, vous pouvez résoudre ce problème, vous devez ajouter flavourDimension avec le nom productFlavors et définir également la dimension, voir l'exemple ci-dessous et pour plus d'informations, cliquez ici 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

    }
 

20voto

Si vous ne souhaitez pas utiliser de cotes, vous devez utiliser cette ligne

 android { 
compileSdkVersion 24

...
flavorDimensions "default"
...
}
 

mais si vous voulez utiliser des dimensions, vous devez d'abord déclarer votre nom de dimension, puis utiliser ce nom après CET exemple provient des documentations:

 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"
  ...
    }
  }
}
...
 

11voto

Ranjit Chandel Points 468

J'ai utilisé flavourDimensions pour mon application dans build.gradle (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
    }
}
 

Vérifiez ce lien pour plus d'informations

 // 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"
            ...
     }
}
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X