ปัญหามิติของ Android Studio 3.0


224

อัปเกรดเป็น build แบบ Studio Canary โครงการก่อนหน้าของ Telegram Messenger ของฉันกำลังให้ข้อผิดพลาดดังต่อไปนี้

ข้อผิดพลาด: ตอนนี้รสชาติทั้งหมดต้องเป็นของมิติรสที่มีชื่อ รสชาติ 'armv7' ไม่ได้ถูกกำหนดให้กับมิติรสชาติ เรียนรู้เพิ่มเติมที่https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

ฉันควรทำอย่างไรดี? ฉันเห็นลิงก์นั้นแล้ว แต่ไม่เข้าใจว่าจะทำอย่างไร ตอนนี้ฉันมี 3 บิลด์ฟอร์แมต, ปล่อย, debug และ foss

คำตอบ:


528

หากคุณไม่ต้องการกลไกจริงๆเพียงระบุมิติรสชาติแบบสุ่มในbuild.gradle:

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

สำหรับข้อมูลเพิ่มเติมให้ตรวจสอบคู่มือการโยกย้าย


1
ขอบคุณ ฉันมีมิติ "versionCode" อยู่แล้วฉันก็ใช้มัน
Omkar Nath Singh

2
flavorDimensions "versionCode" productFlavors {debug {dimension "default" versionName "1.0"} ปล่อย {มิติ "default" versionName "1.0"} foss {มิติ "default" versionName "1.0"}} ฉันได้รับข้อผิดพลาดนี้ .. ชื่อผลิตภัณฑ์ Flavor ไม่สามารถชนกันได้ ด้วยชื่อ BuildType คุณช่วยใครก็ได้โปรดช่วยฉันด้วย ฉันได้รับข้อผิดพลาดนี้ในฐานะเวอร์ชันเบต้า 3.0 Canary กับ Kotlin
Md Maidul Islam

5
หากคุณมีเพียงหนึ่งมิติคุณไม่จำเป็นต้องระบุในแต่ละรสชาติ เพียงแค่flavorDimensions "default"บรรทัดแรกข้างต้นเป็นสิ่งที่จำเป็น
เกรแฮม Borland

1
@ GrahamBorland ขอบคุณสำหรับคำใบ้ฉันได้อัปเดตคำตอบตามนั้น
tknell

1
อาจเพิ่มว่าไฟล์นี้เป็นapp/build.gradle
spedy

60

หลังจากพยายามอ่านอย่างระมัดระวังฉันก็แก้ไขเอง วิธีแก้ไขคือการเพิ่มบรรทัดต่อไปนี้ใน build.gradle

รสขนาด "รุ่นรหัส"

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

2
คุณเพิ่มบรรทัดนี้ตรงไหนใน gradle บริบทเพิ่มเติมเล็กน้อยจะเป็นประโยชน์
Brando Madden

2
ไฟล์ Inside.gradle ใน Android {... }
Omkar Nath Singh

android {compileSdkVersion 24 .... // เพิ่มที่นี่}
Omkar Nath Singh

16
ทำไม"versionCode"และไม่ใช่อย่างอื่น? มันจะส่งผลกระทบต่อ versionCode แต่อย่างใด?
MBH

1
@MBH ฉันมีสิ่งนั้นในผลิตภัณฑ์ของฉันลาออก คุณเพียงแค่ต้องการคีย์ที่ไม่ซ้ำกันเพื่อระบุ
Omkar Nath Singh

40

ที่นี่คุณสามารถแก้ไขปัญหานี้ได้คุณจะต้องเพิ่ม flavorDimension ด้วยชื่อผลิตภัณฑ์ของรสชาติและจำเป็นต้องกำหนดมิติด้วยดูตัวอย่างด้านล่างและสำหรับข้อมูลเพิ่มเติมดูที่นี่ 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

หากคุณไม่ต้องการใช้ส่วนข้อมูลคุณควรใช้บรรทัดนี้

android { 
compileSdkVersion 24

...
flavorDimensions "default"
...
}

แต่ถ้าคุณต้องการใช้ขนาดคุณควรประกาศชื่อมิติของคุณก่อนแล้วใช้ชื่อนี้หลังจากตัวอย่างนี้มาจากเอกสาร:

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

ฉันใช้ flavorDimensions สำหรับแอปพลิเคชันของฉันใน build.gradle (โมดูล: แอป)

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

ตรวจสอบลิงค์นี้สำหรับข้อมูลเพิ่มเติม

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

หากคุณมีรสชาติที่เรียบง่าย (ฟรี / โปร, ตัวอย่าง / เต็ม ฯลฯ ) จากนั้นเพิ่มไปยังไฟล์ build.gradle:

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

ตามมิติคุณสามารถสร้าง "รสชาติในรสชาติ" อ่านเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.