Flavor 'xxxx' has unknown dimension 'app'.和Unable to load class 'org.gradle.api.internal.compo
Flavor ‘xxxx’ has unknown dimension ‘app’.
android studio 3.0,更新
classpath ‘com.android.tools.build:gradle:3.0.0’以後,出現報錯
Error:All flavors must now belong to a named flavor dimension.
The flavor ‘flavor_name’ is not assigned to a flavor dimension.
報錯的原因:檢視給出的連結地址:https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#apply_plugin
The plugin now requires that all flavors belong to a named flavor dimension—even if you intend to use only a single dimension. Otherwise, you will get the following build error:
意思大致說,這個3.0的外掛要求flavor dimension必須要有,哪怕只有一個維度也要宣告, flavorDimensions 是在android{}中的欄位:可以理解成維度,比如下面只聲明瞭一個渠道的維度,
flavorDimensions “channel”
//渠道
productFlavors {
qh360 {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qh360"]
dimension "channel"
}
baidu {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
dimension "channel"
}
}
關於flavorDimensions 可以生成多維度,比如下面的程式碼
// 兩個維度
flavorDimensions “isFree”, “channel”
productFlavors {
free {
// 免費和付費用isFree做標識,小米和htc為釋出到的平臺用channel做標識,因而最後生成4
//種flavor,加上buildtype就是4*2=8種
dimension “isFree”
…
}
paid {
dimension "isFree"
...
}
xiaomi{
dimension "channel"
...
}
htc{
dimension "channel"
...
}
}
其實就是在3.0外掛以後,google要求必須新增這個flavorDimensions 這個欄位哪怕是隻有一個維度也要寫上才不報錯,
然後看到stackoverflow上的回答更簡單的使用如下:
android {
defaultConfig {
flavorDimensions 'default'
}
或是:
android {
defaultConfig {
flavorDimensions 'versionCode'
}
針對Unable to load class ‘org.gradle.api.internal.compo
classpath ‘com.novoda:bintray-release:0.4.0’改成最新(當前是0.8),
然後還有就是依賴其他專案版本的問題,統一管理。
//統一管理
ext {
var = [
minSdkVersion : 19,
targetSdkVersion : 27,
compileSdkVersion : 27,
buildToolsVersion : "27.0.2",
versionName : "2.9.2",
versionCode : 292,
supportVersion : "27.1.1",
okhttploggingVersion: '3.8.1',
okhttpVersion : '3.8.1',
retrofitVersion : '2.4.0',
rxjavaVersion : '2.1.12',
rxandroidVersion : '2.0.2',
]
}
這種多渠道,以及依賴專案。Android studio建議用正式版,別急著嚐鮮我的版本是3.14.
希望對你有所幫助,紙上得來終覺淺,書到用時方恨少。