Android Studio 3.0フレーバーディメンションの問題


224

Studio Canaryビルドにアップグレードされました。以前のTelegram Messengerのプロジェクトで、次のエラーが発生しました。

エラー:すべてのフレーバーは、名前付きのフレーバーディメンションに属している必要があります。フレーバー「armv7」はフレーバーディメンションに割り当てられていません。詳しくはhttps://d.android.com/r/tools/flavorDimensions-missing-error-message.htmlをご覧ください

私は何をすべきか?私はそのリンクをすでに見ましたが、何をすべきか理解できませんでした。現在、3つのビルドバリアント、リリース、デバッグ、フォスがあります。

回答:


528

メカニズムが本当に必要ない場合は、ランダムなフレーバーディメンションを指定しますbuild.gradle

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

詳細については、移行ガイドを確認してください


1
ありがとう。私はすでに「versionCode」という次元を持っていて、それを使いました。
Omkar Nath Singh 2017

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でこのエラーAS 3.0ベータ版Canaryを受け取りました。
Md Maidul Islam 2017

5
次元が1つしかない場合は、各フレーバーでそれを指定する必要はありません。flavorDimensions "default"上記の最初の行だけが必要なすべてです。
Graham Borland

1
@GrahamBorlandヒントをありがとう、それに応じて答えを更新しました。
tknell 2017年

1
多分、ファイルが次のようであることを追加してくださいapp/build.gradle
急いでください'20 / 06/20

60

注意深く読んだ後、私は自分で解決しました。解決策は、build.gradleに次の行を追加することです。

flavorDimensions "versionCode"

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

2
グラドルのどこにこの行を追加しますか?もう少しコンテキストが参考になります
Brando Madden 2017年

2
build.gradleファイル内、android {...}
Omkar Nath Singh

android {compileSdkVersion 24 .... //ここに追加}
Omkar Nath Singh

16
なぜ「versionCode」で他に何もないのですか?とにかくversionCodeに影響しますか?
MBH、2017年

1
@MBH私は私のproductFlavoursにそれがあります。識別するには一意のキーが必要です。
Omkar Nath Singh 2017

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(モジュール:アプリ)で私のアプリケーションに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.