Problema relativo alla dimensione del sapore di Android Studio 3.0


224

Aggiornato alla build di Studio Canary. Il mio precedente progetto di Telegram Messenger sta dando il seguente errore.

Errore: ora tutti gli aromi devono appartenere a una dimensione aromi denominata. L'aroma "armv7" non è assegnato a una dimensione dell'aroma. Ulteriori informazioni su https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

Cosa dovrei fare? Ho già visto quel link ma non riuscivo a capire cosa fare. Ora ho 3 varianti di build, release, debug e foss.

Risposte:


528

Se non hai davvero bisogno del meccanismo, specifica semplicemente una dimensione di sapore casuale nel tuo build.gradle:

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

Per ulteriori informazioni, consultare la guida alla migrazione


1
Grazie. Avevo già una dimensione "versionCode", l'ho usato.
Omkar Nath Singh,

2
flavourDimensioni "versionCode" productFlavors {debug {dimension "default" versionName "1.0"} release {dimension "default" versionName "1.0"} foss {dimension "default" versionName "1.0"}} Ho riscontrato questo errore. I nomi dei prodotti non possono scontrarsi con nomi BuildType. Potresti per favore qualcuno mi aiuti. Ho ricevuto questo errore AS 3.0 beta versione Canary con Kotlin.
Md Maidul Islam,

5
Se hai solo una dimensione, non è necessario specificarla in ogni sapore. Solo la prima flavorDimensions "default"riga sopra è tutto ciò che serve.
Graham Borland,

1
@GrahamBorland grazie per il suggerimento, ho aggiornato la risposta di conseguenza.
tknell,

1
forse aggiungo, che il file èapp/build.gradle
spedy

60

Dopo aver provato e letto attentamente, l'ho risolto da solo. La soluzione è aggiungere la seguente riga in build.gradle.

flavourDimensioni "versionCode"

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

2
dove nella classe aggiungi questa riga? Un po 'più di contesto sarebbe utile
Brando Madden il

2
All'interno del file build.gradle, in android {...}
Omkar Nath Singh,

android {compileSdkVersion 24 .... // aggiungi qui}
Omkar Nath Singh

16
perché "versionCode" e non altro? influenzerà comunque versionCode?
MBH,

1
@MBH L'ho nel mio prodotto Sapori. Hai solo bisogno di una chiave univoca per identificare.
Omkar Nath Singh,

40

Qui puoi risolvere questo problema, devi aggiungere flavorDimension con il nome productFlavors e anche definire la dimensione, vedi l'esempio seguente e per maggiori informazioni vedi qui https://developer.android.com/studio/build/gradle-plugin- 3-0-0-migration.html

flavorDimensions 'yourAppName' //here defined dimensions
productFlavors {
    production {
        dimension 'yourAppName' //you just need to add this line
        //here you no need to write applicationIdSuffix because by default it will point to your app package which is also available inside manifest.xml file.

    }

    staging {
        dimension 'yourAppName' //added here also
        applicationIdSuffix ".staging"//(.staging) will be added after your default package name.
        //or you can also use applicationId="your_package_name.staging" instead of applicationIdSuffix but remember if you are using applicationId then You have to mention full package name.
        //versionNameSuffix "-staging"

    }

    develop {
        dimension 'yourAppName' //add here too
        applicationIdSuffix ".develop"
        //versionNameSuffix "-develop"

    }

19

Se non si desidera utilizzare le dimensioni, è necessario utilizzare questa riga

android { 
compileSdkVersion 24

...
flavorDimensions "default"
...
}

ma se si desidera utilizzare le dimensioni, è necessario dichiarare prima il nome della propria dimensione, quindi utilizzare questo nome dopo che QUESTO esempio proviene dalle documentazioni:

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

9

Ho usato flavorDimensions per la mia applicazione in build.gradle (Modulo: 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
    }
}

Controlla questo link per maggiori informazioni

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

0

Se hai sapori semplici (free / pro, demo / full ecc.) Quindi aggiungi al file build.gradle:

android {
...
flavorDimensions "version"
productFlavors {
        free{
            dimension "version"
            ...
            }
        pro{
            dimension "version"
            ...
            }
}

Per dimensioni è possibile creare "sapori in sapori". Per saperne di più .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.