Android Studio3發(fā)布了也有一陣子了。然而,除了偶爾看幾眼外,工作中一直還是用2在做日常的開發(fā)。
又然而,某天手賤沒仔細(xì)看就點(diǎn)了更新,直接就把手頭的2升級到3了。呃,好吧,升級就升級吧。
又然而,原來的項(xiàng)目竟然在Studiou3里直接就不能build了。來來來,看看啥情況。
1.首先是gradle plugin 要3以上,sdk build tools 要26以上了。好吧好吧,你說啥就是啥吧。
2. 然后是Error:All flavors must now belong to a named flavor dimension. 錯誤。
這個主要是說你需要為每個版本構(gòu)建一個或多個flavorDimensions。利用這個就可以打包不同需求的版本。(不打包多個版本的話不會報這個錯)
在主app的build.gradle里面的defaultConfig里加入flavorDimensions屬性,比如這里構(gòu)建demo和Release這兩個維度。
像這樣
defaultConfig {
targetSdkVersion:***
minSdkVersion :***
versionCode:***
versionName :***
flavorDimensions "demo","release"
}
3.然后,因?yàn)樾枰嗲来虬?,那么需要在渠道配置里指定dimension參數(shù)。
需要注意的是之前設(shè)置的每個Dimension都要用到哦,比如這樣:
productFlavors {
_demo {
dimension "demo"
}
_wandoujia {
dimension "release"
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "_wandoujia"]
}
}
4.build一下,又爆Unable to resolve dependency for ':app@dexOptions/compileClasspath': Could not resolve project...的錯。
根據(jù)https://stackoverflow.com/questions/46949622/android-studio-3-0-unable-to-resolve-dependency-for-appdexoptions-compilecla這個帖子。
所有依賴進(jìn)來的庫的build.gradle中必須有和主app的build.gradle里一樣的buildTypes設(shè)置。所以就是把
buildTypes{
release {
...
}
debug {
...
}
}
里的內(nèi)容在依賴庫的build.gradle里也設(shè)置一下就是了。
5.再build一下,咦,又說不能讀取友盟推送sdk的jar文件了。
看了下具體文件,原來是之前舊版本的jar文件沒法讀取。Studio2的時候?yàn)槊珱]有和我說起這個事呢?
刪除之。
6.再build一下,一切正常了,從此就在Studio3下搬磚了。
關(guān)于的flavorDimensions具體使用,可以參考:配置構(gòu)建變體