web-dev-qa-db-ja.com

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

Studio Canaryビルドにアップグレードしました。私の以前のTelegram Messengerのプロジェクトは以下のエラーを出しています。

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

私は何をすべきか?私はすでにそのリンクを見ましたが、どうすればいいのか理解できませんでした。私は現在3つのビルドバリアント、release、debugそしてfossを持っています。

207

あなたが本当にそのメカニズムを必要としないのであれば、単にあなたのbuild.gradleにランダムなフレーバー次元を指定してください。

Android { 
    ...
    flavorDimensions "default"
    ...
}

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

482
tknell

慎重に読んで読んだ後、私はそれを自分で解決しました。解決策はbuild.gradleに次の行を追加することです。

flavorDimensions "versionCode"

Android { 
       compileSdkVersion 24
       .....
       flavorDimensions "versionCode"
} 
58

ここでこの問題を解決するには、flavorDimensionにproductFlavorsの名前を追加し、ディメンションも定義する必要があります。以下の例を参照してください。詳細については、こちらを参照してくださいhttps://developer.Android.com/studio/build/gradle-plugin-3-0-0-migration.html

flavorDimensions 'free','paid' //here defined dimensions
productFlavors {
    production {
        dimension 'paid' //you just need to add this line
        ... // your existing code

    }

    demo {
        dimension 'free' //added here also
        ... // your existing code

    }

    development {
        dimension 'free' //add here too
        ... // your existing code

    }
35
Abdul Rizwan

寸法を使用したくない場合は、この行を使用してください。

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"
  ...
    }
  }
}
...
16

私はbuild.gradle(Module: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"
            ...
     }
}
8
Ranjit Chandel

シンプルなフレーバー(free/pro、demo/fullなど)がある場合は、build.gradleファイルに追加します。

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

ディメンションによって、「フレーバーのフレーバー」を作成できます。 詳細

0
Style-7