Android Studio 3.0 Lezzet Boyut Sorunu


224

Studio Canary derlemesine yükseltildi. Telegram Messenger'ın önceki projem şu hatayı veriyor.

Hata: Tüm aromalar şimdi adlandırılmış bir aroma boyutuna ait olmalıdır. 'Armv7' aroması bir aroma boyutuna atanmamıştır. Https://d.android.com/r/tools/flavor adresinde daha fazla bilgi edinin.

Ne yapmalıyım? Bu bağlantıyı daha önce görmüştüm ama ne yapacağımı anlayamadım. Şimdi 3 yapı varyantım var, serbest bırak, hata ayıkla ve fosil.

Yanıtlar:


528

Mekanizmaya gerçekten ihtiyacınız yoksa, sadece rastgele bir lezzet boyutu belirtin build.gradle:

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

Daha fazla bilgi için taşıma kılavuzunu kontrol edin


1
Teşekkürler. Zaten bir boyut "versionCode" vardı, bunu kullandım.
Omkar Nath Singh

2
flavorDimensions "versionCode" productFlavors {debug {dimension "default" versionName "1.0"} yayın {boyut "varsayılan" versionName "1.0"} foss {boyut "varsayılan" versionName "1.0"}} Bu hatayı aldım .. ProductFlavor isimleri çarpışamıyor BuildType adları ile. Birinin bana yardım etmesini ister misiniz? Kotlin ile AS 3.0 beta sürümü Canary bu hatayı aldım.
Md Maidul Islam

5
Yalnızca bir boyutunuz varsa, her lezzette belirtmeniz gerekmez. Sadece flavorDimensions "default"yukarıdaki ilk satır gereken tek şey.
Graham Borland

1
@GrahamBorland ipucu için teşekkürler, cevabı buna göre güncelledim.
tknell

1
belki ekleyin, dosyaapp/build.gradle
spedy

60

Dikkatlice denedikten ve okuduktan sonra kendim çözdüm. Çözüm build.gradle içinde aşağıdaki satırı eklemektir.

flavorDimensions "versionCode"

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

2
bu satırı nereye ekliyorsun? Biraz daha bağlam yardımcı olacaktır
Brando Madden

2
Build.gradle dosyasının içinde, android {...}
Omkar Nath Singh

android {compileSdkVersion 24 .... // buraya ekleyin}
Omkar Nath Singh

16
neden "versionCode" ve başka bir şey değil? nasıl olsa VersionCode etkiler?
MBH

1
@MBH Bunu ürünümde varFlavours. Tanımlamak için sadece benzersiz bir anahtara ihtiyacınız var.
Omkar Nath Singh

40

Burada bu sorunu çözebilir, productFlavors adıyla flavorDimension eklemeniz ve boyutu da tanımlamanız gerekir, aşağıdaki örneğe bakın ve daha fazla bilgi için buraya bakın 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

Boyutları kullanmak istemiyorsanız bu satırı kullanmalısınız

android { 
compileSdkVersion 24

...
flavorDimensions "default"
...
}

ancak boyutları kullanmak istiyorsanız, önce boyut adınızı bildirmeniz ve ardından bu adı belgelerden aldıktan sonra bu adı kullanmanız gerekir:

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

Build.gradle uygulamamda flavorDimensions kullandım (Modül: 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
    }
}

Daha fazla bilgi için bu bağlantıyı kontrol edin

// 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

Basit tatlarınız varsa (ücretsiz / pro, demo / tam vb.) Daha sonra build.gradle dosyasına ekleyin:

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

Boyutlara göre "tatlarda tatlar" oluşturabilirsiniz. Daha fazlasını okuyun .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.