Android Studio 3.0 Аромат Размерный выпуск

224

Обновлен до студии Canary build. Мой предыдущий проект Telegram Messenger дает следующую ошибку.

Ошибка: все ароматы должны теперь принадлежать к названному измерению ароматов. Аромат 'armv7' не относится к измерению аромата. Узнайте больше на https://d.android.com/r/tools/flavorDimensions-missing-error-message.html

Что я должен делать? Я уже видел эту ссылку, но не мог понять, что делать. У меня есть 3 варианта сборки, релиз, отладка и фосс.

Омкар Натх Сингх
источник

Ответы:

528

Если вам не нужен механизм, просто укажите случайное измерение аромата в вашем build.gradle:

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

Для получения дополнительной информации ознакомьтесь с руководством по миграции.

tknell
источник
1
Спасибо. У меня уже было измерение "versionCode", я использовал это.
Омкар Натх Сингх
2
flavourDimensions "versionCode" productFlavors {debug {измерение "по умолчанию" versionName "1.0"} release {измерение "по умолчанию" versionName "1.0"} foss {измерение "default" versionName "1.0"}} Я получил эту ошибку .. Имена ProductFlavor не могут конфликтовать с именами BuildType. Не могли бы вы, пожалуйста, кто-нибудь помочь мне. Я получил эту ошибку AS 3.0 бета-версию Canary с Kotlin.
Md Maidul Islam
5
Если у вас есть только одно измерение, вам не нужно указывать его в каждом варианте. Просто первая flavorDimensions "default"строка выше - это все, что нужно.
Грэм Борланд
1
@GrahamBorland спасибо за подсказку, я обновил ответ соответственно.
tknell
1
возможно добавлю, что файлapp/build.gradle
spedy
60

Попробовав и внимательно прочитав, я решил это сам. Решение состоит в том, чтобы добавить следующую строку в build.gradle.

flavourDimensions "versionCode"

android { 
       compileSdkVersion 24
       .....
       flavorDimensions "versionCode"
} 
Омкар Натх Сингх
источник
2
где в граде вы добавляете эту строку? Немного больше контекста будет полезно
Брандо Мэдден
2
Внутри файла build.gradle, в android {...}
Омкар Натх Сингх
android {compileSdkVersion 24 .... // добавить сюда}
Омкар Натх Сингх
16
почему "versionCode", а не что-нибудь еще? это как-то повлияет на versionCode?
MBH
1
@MBH У меня есть это в моем productFlavours. Вам просто нужен любой уникальный ключ для идентификации.
Омкар Натх Сингх
40

Здесь вы можете решить эту проблему, вам нужно добавить flavourDimension с именем productFlavors, а также определить размер, см. Пример ниже и дополнительную информацию смотрите здесь 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

Я использовал flavourDimensions для своего приложения в 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

Если у вас есть простые варианты (free / pro, demo / full и т. Д.), Добавьте в файл build.gradle:

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

По размерам вы можете создавать «ароматизаторы в ароматах». Подробнее .

Стиль-7
источник