Android Studio 3.0 Flavor Dimension Issue

后端 未结 7 1603
我寻月下人不归
我寻月下人不归 2020-12-04 05:49

Upgraded to Studio Canary build. My previous project of Telegram Messenger is giving following error.

Error:All flavors must now belong to a named fla

相关标签:
7条回答
  • 2020-12-04 06:38

    If you have simple flavors (free/pro, demo/full etc.) then add to build.gradle file:

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

    By dimensions you can create "flavors in flavors". Read more.

    0 讨论(0)
  • 2020-12-04 06:39

    in KotlinDSL you can use like this :

    flavorDimensions ("PlaceApp")
    productFlavors {
        create("tapsi") {
            setDimension("PlaceApp")
            buildConfigField("String", "API_BASE_URL", "https://xxx/x/x/")
        }
    
    }
    
    0 讨论(0)
  • 2020-12-04 06:45

    After trying and reading carefully, I solved it myself. Solution is to add the following line in build.gradle.

    flavorDimensions "versionCode"

    android { 
           compileSdkVersion 24
           .....
           flavorDimensions "versionCode"
    } 
    
    0 讨论(0)
  • 2020-12-04 06:52

    If you want not to use dimensions you should use this line

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

    but if you want ti use dimensions you should declare your dimension name first and then use this name after THIS example is from the documentations:

    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"
      ...
        }
      }
    }
    ...
    
    0 讨论(0)
  • 2020-12-04 06:53

    If you don't really need the mechanism, just specify a random flavor dimension in your build.gradle:

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

    For more information, check the migration guide

    0 讨论(0)
  • 2020-12-04 06:53

    Here you can resolve this issue, you need to add flavorDimension with productFlavors's name and need to define dimension as well, see below example and for more information see here 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"
    
        }
    
    0 讨论(0)
提交回复
热议问题