Bug出現(xiàn)
今天在項(xiàng)目開發(fā)中,編譯工程時(shí),突然出現(xiàn)了一個(gè)莫名的錯(cuò)誤提示,即標(biāo)題的“Error:In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVariationSettings”:導(dǎo)致編譯無(wú)法通過(guò)。

(有些的人的編譯錯(cuò)誤提示是: Error:In FontFamilyFont, unable to find attribute android:font ,等等)
出現(xiàn)原因
1.可能是compileSdkVersion與targetSdkVersion的版本不一致(如“Android中出現(xiàn)Error:In <declare-styleable> FontFamilyFont, unable to find attribute android:font 解決辦法”);
2.可能是工程中依賴的com.android.support:support-v4 (或support-v7) 版本不一致。
解決方法
原因1的解決方法很簡(jiǎn)單,把自己工程的build.gradle文件中的compileSdkVersion及targetSdkVersion的版本設(shè)成一致就OK了,如27。
原因2 的解決方法則是檢查自己工程是否有重復(fù)導(dǎo)入support-v4包 或 依賴的類庫(kù)中是否有重復(fù)導(dǎo)入support-v4包,若有則剔除即可。
自己的工程問(wèn)題
然而我查看自己的工程,這兩個(gè)版本一直是一致的都是27,這個(gè)工程已維護(hù)好幾個(gè)月了,不可能出現(xiàn)此問(wèn)題。排除問(wèn)題1;
再看dependencies中的一行依賴有個(gè)提示:All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes).Found versions 28.0.0-alpha1,27.0.0.Examples include com.android.support:asynclayoutinflater:28.0.0-alpha1 and com.android.support:animated-vector-drawable:27.0.0.

很顯然是提示support-v4不一致的,自己的工程僅僅引入了一次,那只能是依賴的類庫(kù)中的問(wèn)題了。經(jīng)過(guò)一番查詢,發(fā)現(xiàn)是# AndroidPicker這個(gè)安卓選擇類庫(kù)出現(xiàn)的問(wèn)題,:

原來(lái)是這個(gè)類庫(kù)的support-v4使用的是最新版本,正好3月8日凌晨google發(fā)布了安卓9.0(即Android P)首個(gè)開發(fā)者預(yù)覽版,導(dǎo)致了重新編譯工程時(shí),此類庫(kù)的support-v4使用的是最新的com.android.support:support-v4:28.0.0 rc1,與我工程中的27.0.0不一致了,從而導(dǎo)致了“Error:In <declare-styleable> FontFamilyFont, unable to find attribute android:fontVariationSettings”的錯(cuò)誤(難怪我工程的compileSdkVersion 和targetSdkVersion使用'android-P' 可以編譯通過(guò),無(wú)錯(cuò)誤提示)。
自己工程解決
終于發(fā)現(xiàn)自己工程依賴的類庫(kù)#AndroidPicker問(wèn)題,因而剔除類庫(kù)中的support-v4,統(tǒng)一使用自己工程的就OK了(其他類似問(wèn)題同理解決)。
compile('cn.qqtheme.framework:WheelPicker:latest.release') { exclude group: 'com.android.support' }