Android Studio 3.0 맛 차원 문제


224

Studio Canary 빌드로 업그레이드되었습니다. Telegram Messenger의 이전 프로젝트에서 다음과 같은 오류가 발생합니다.

오류 : 모든 맛이 이제 명명 된 맛 차원에 속해야합니다. 특징 'armv7'은 특징 차원에 할당되지 않습니다. https://d.android.com/r/tools/flavorDimensions-missing-error-message.html 에서 자세히 알아보십시오.

어떻게해야합니까? 나는 이미 그 링크를 보았지만 어떻게 해야할지 이해할 수 없었습니다. 릴리스, 디버그 및 foss의 3 가지 빌드 변형이 있습니다.

답변:


528

실제로 메커니즘이 필요하지 않은 경우 다음에 임의의 풍미 크기를 지정하십시오 build.gradle.

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

자세한 내용은 마이그레이션 안내서를 확인하십시오.


1
감사. 나는 이미 "versionCode"라는 차원을 가지고있었습니다.
Omkar Nath Singh

2
flavorDimensions "versionCode"productFlavors {debug {dimension "default"versionName "1.0"} release {dimension "default"versionName "1.0"} foss {dimension "default"versionName "1.0"}}이 오류가 발생했습니다 ..ProductFlavor 이름이 충돌 할 수 없습니다. BuildType 이름으로. 누구든지 나를 도울 수 있습니까? Kotlin과 함께 3.0 베타 버전 카나리아 로이 오류가 발생했습니다.
Md Maidul Islam

5
차원이 하나 뿐인 경우 각 맛에 차원을 지정할 필요가 없습니다. flavorDimensions "default"위 의 첫 번째 줄만 있으면됩니다.
Graham Borland

1
@GrahamBorland 힌트에 감사드립니다. 나는 그에 따라 답변을 업데이트했습니다.
tknell

1
파일이 다음과 같이 추가 될 수도 있습니다.app/build.gradle
spedy

60

주의 깊게 읽고 읽은 후에 직접 해결했습니다. 해결책은 build.gradle에 다음 줄을 추가하는 것입니다.

flavorDimensions "versionCode"

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

2
gradle 에서이 줄을 어디에 추가합니까? 조금 더 많은 맥락이 도움이 될 것입니다
Brando Madden

2
안드로이드 {...}의 내부 build.gradle 파일
omkar는 나스 싱

android {compileSdkVersion 24 .... // 여기에 추가}
Omkar Nath Singh

16
"versionCode" 이고 다른 것은 없습니까? 어쨌든 versionCode에 영향을 줍니까?
MBH

1
@MBH 내 productFlavours에 있습니다. 식별 할 고유 키가 필요합니다.
옴 카르 나트 싱

40

여기 에서이 문제를 해결할 수 있습니다. productFlavors 이름으로 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

build.gradle (모듈 : app)의 응용 프로그램에 flavorDimensions를 사용했습니다.

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.