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.