Vấn đề kích thước hương vị Android Studio 3.0


224

Nâng cấp lên bản dựng Studio Canary. Dự án trước đây của tôi về Telegram Messenger đang đưa ra lỗi sau.

Lỗi: Tất cả các hương vị bây giờ phải thuộc về một chiều hương vị được đặt tên. Hương vị 'armv7' không được gán cho kích thước hương vị. Tìm hiểu thêm tại https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

Tôi nên làm gì? Tôi đã thấy liên kết đó nhưng không thể hiểu phải làm gì. Tôi có 3 biến thể xây dựng bây giờ, phát hành, gỡ lỗi và foss.

Câu trả lời:


528

Nếu bạn không thực sự cần cơ chế, chỉ cần chỉ định kích thước hương vị ngẫu nhiên trong build.gradle:

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

Để biết thêm thông tin, hãy kiểm tra hướng dẫn di chuyển


1
Cảm ơn. Tôi đã có một kích thước "versionCode", tôi đã sử dụng nó.
Omkar Nath Singh

2
tastDimensions "versionCode" productFlavors {debug {height "default" versionName "1.0"} phát hành {height "default" versionName "1.0"} foss {size "default" versionName "1.0"}} Tôi gặp lỗi này .. Tên sản phẩmFlavor không thể va chạm với tên BuildType. Bạn có thể vui lòng bất cứ ai giúp tôi. Tôi đã gặp lỗi này phiên bản beta 3.0 Canary với Kotlin.
Md Maidul Hồi giáo

5
Nếu bạn chỉ có một chiều, bạn không cần chỉ định nó trong mỗi hương vị. Chỉ cần flavorDimensions "default"dòng đầu tiên ở trên là tất cả những gì cần thiết.
Graham Borland

1
@GrahamBorland cảm ơn vì gợi ý, tôi đã cập nhật câu trả lời cho phù hợp.
tknell

1
có thể thêm, rằng tập tin làapp/build.gradle
spedy

60

Sau khi thử và đọc cẩn thận, tôi tự giải quyết nó. Giải pháp là thêm dòng sau vào build.gradle.

Hương vị kích thước "phiên bản mã"

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

2
bạn thêm dòng này vào đâu? Một chút bối cảnh sẽ hữu ích
Brando Madden

2
Bên trong tệp build.gradle, trong Android {...}
Omkar Nath Singh

android {compileSdkVersion 24 .... // thêm vào đây}
Omkar Nath Singh

16
Tại sao "versionCode" mà không phải cái gì khác? Dù sao nó cũng sẽ ảnh hưởng đến versionCode?
MBH

1
@MBH Tôi có cái đó trong sản phẩm của mìnhFlavours. Bạn chỉ cần bất kỳ khóa duy nhất để xác định.
Omkar Nath Singh

40

Tại đây, bạn có thể giải quyết vấn đề này, bạn cần thêm hương vị với tên của ProductFlavors và cũng cần xác định thứ nguyên, xem ví dụ bên dưới và để biết thêm thông tin tại đây https://developer.android.com/studio/build/gradle-plugin- 3-0-0-di chuyển.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

Nếu bạn không muốn sử dụng kích thước, bạn nên sử dụng dòng này

android { 
compileSdkVersion 24

...
flavorDimensions "default"
...
}

nhưng nếu bạn muốn sử dụng kích thước, trước tiên bạn nên khai báo tên thứ nguyên của mình và sau đó sử dụng tên này sau ví dụ NÀY từ tài liệu:

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

Tôi đã sử dụng Hương vị kích thước cho ứng dụng của mình trong build.gradle (Mô-đun: ứng dụng)

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

Kiểm tra liên kết này để biết thêm

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

Nếu bạn có các hương vị đơn giản (miễn phí / pro, demo / đầy đủ, v.v.) thì hãy thêm vào tệp build.gradle:

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

Theo kích thước, bạn có thể tạo ra "hương vị trong hương vị". Đọc thêm .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.