欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android studio 3.0上进行多渠道打包遇到的问题

程序员文章站 2022-04-06 23:34:58
Android studio 3.0上进行多渠道打包遇到的问题。 Error:All flavors must now belong to a named flavor d...

Android studio 3.0上进行多渠道打包遇到的问题。

Error:All flavors must now belong to a named flavor dimension. The flavor ‘xiaomi’ is not assigned to a flavor dimension. Learn more at https://d.android.com/r/tools/flavorDimensions-missing-error-message.html
Android studio 3.0上进行多渠道打包时编译时出现这个错误
多渠道打包参考:https://blog.csdn.net/mynameishuangshuai/article/details/51783303
解决问题参考:https://*.com/questions/44105127/android-studio-3-0-flavor-dimension-issue
多渠道打包的细节我就不说了,参考网络上的,或者我上面的这个链接就好,下面给出一下我修改的代码
flavorDimensions "default"
    productFlavors {
        kuan {
            dimension "default"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "kuan"]
        }
        xiaomi {
            dimension "default"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
        }
        qh360 {
            dimension "default"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qh360"]
        }
        baidu {
            dimension "default"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
        }
        wandoujia {
            dimension "default"
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
        }
    }
或者:
flavorDimensions "default"
    productFlavors {
        kuan {dimension "default"}
        xiaomi {dimension "default"}
        qh360 {dimension "default"}
        baidu {dimension "default"}
        wandoujia {dimension "default"}
    }

    productFlavors.all {
        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }

然后解决问题之后我又去官网查阅了一下,地址如下:
https://developer.android.com/studio/build/build-variants.html#flavor-dimensions
根据官网说法:
You must assign each product flavor you configure to one of the flavor dimensions.
你必须指定一种 flavor dimensions
 
void flavorDimensions(String... dimensions)
flavorDimensions 后面可以添加多个不同类型的参数例如:
 
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"
      ...
    }
  }

好了,这就是官方给出的gradle多渠道打包的方式。