[App] Android Studio 3.0上多渠道打包遇到的问题

Posted 灰灰的Rom笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[App] 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上进行多渠道打包时编译时出现这个错误

多渠道打包参考:

http://blog.csdn.net/mynameishuangshuai/article/details/51783303

解决问题参考:

https://stackoverflow.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多渠道打包的方式。



以上是关于[App] Android Studio 3.0上多渠道打包遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 3.0:无法解析:app@dexOptions/compileClasspath'的依赖关系:无法解析项目:animators

3.0Android Studio构建和运行应用

3.0Android Studio构建和运行应用

Android Studio 3.0 | Kotlin 测试

Android Studio 3.0 任务执行失败:无法合并 dex

手把手教你在Android Studio 3.0上分析内存泄漏