In FontFamilyFont, unable to find attribute android:font的報錯處理

Information:Gradle tasks [:app:generateDebugSources, :app:mockableAndroidJar, :app:prepareDebugUnitTestDependencies, :app:generateDebugAndroidTestSources]
Error:In <declare-styleable> FontFamilyFont, unable to find attribute android:font
Error:In <declare-styleable> FontFamilyFont, unable to find attribute android:fontWeight
Error:Execution failed for task ':app:processDebugResources'.
> com.android.ide.common.process.ProcessException: Failed to execute aapt
Information:BUILD FAILED
複製代碼

你是否是也遇到過這種問題,而不知道從何下手?明明所有版本都已經修改過了,爲何仍是會出現這種錯誤?咱們帶着心中的小疑惑來看一下這是爲何以及他的解決辦法。進入正題,先說下出現這個問題的緣由:android

1.compileSdkVersion 和buildToolsVersion 的版本不對應
2.多是工程中依賴的com.android.support:support-v4 (或support-v7) 版本不一致。

具體解決方案:bash

緣由一:compileSdkVersion 和buildToolsVersion 的版本不對應

把工程的build.gradle文件中的compileSdkVersion及buildToolsVersion的版本設成一致。以下圖所示app

  • 升級你的buildToolsVersion到最新版,問題直接解決。
  • 也能夠選擇將目標版本降到你的sdk版本。不幸的是,問題絲毫沒改變。

經過第一點的改正,咱們排除了compileSdkVersion 和buildToolsVersion 的版本不對應的問題。可是仍是沒有徹底解決掉該問題。我們接着往下看ide

緣由二:工程中依賴的com.android.support:support-v4 (或support-v7) 版本不一致

因爲是導入別人的項目,對於dependencies{}中依賴的項目須要挨個排查依賴庫使用的v4或者v7包的版本,最後找出緣由並剔除類庫中的support-v4,統一使用本身工程的就OK了(其餘相似問題同理解決) 例如AndroidPicker類,修改以下gradle

compile('cn.qqtheme.framework:WheelPicker:latest.release') { exclude group: 'com.android.support' }
複製代碼

對於不是本身的項目而項目自己又有不少依賴的時候,這個工做量是巨大且盲目的,所有都查一遍的話是要瘋掉的。不要緊,我們有簡單粗暴並且有效的辦法,我們在configurations.all{}修正v4包版本的版本信息,以下所示ui

android {
    configurations.all {
        resolutionStrategy.force 'com.android.support:support-v4:25.3.1'
    }
}
複製代碼

讓咱們愉快的運行起來,忽然發現仍是報相同的錯誤。難道說是騙人的?並非這樣,剛纔說了,多是com.android.support:support-v4,也多是com.android.support:appcompat-v7致使的或者是其餘的support包致使的。spa

簡單粗暴,直接有效

仍是在configurations.all{}中,我們對com.android.support:統一配置版本,代碼以下:code

android {
    configurations.all {
        resolutionStrategy.eachDependency { DependencyResolveDetails details ->
            def requested = details.requested
            if (requested.group == 'com.android.support') {
                if (!requested.name.startsWith("multidex")) {
                    details.useVersion '25.3.1'
                }
            }
        }
    }
}
複製代碼

問題解決,Sync一下項目自不用說。之後不再用擔憂項目中依賴的某個庫中依賴了support-v4或者v7版本太高了,用這個方法能夠統一進行處理。若是有什麼問題歡迎留言指正。若是對你有幫助,不妨點個贊支持一下。orm

相關文章
相關標籤/搜索